mongoose 为什么它返回的地址为null?

djmepvbi  于 12个月前  发布在  Go
关注(0)|答案(2)|浏览(102)

地址功能:-

export const GetAddress = async (req, res) => {
  let user = req.user;
  try {
    if (!user) {
      res.status(404).json({ message: "User not Found", success: false });
      return;
    }

    let id = await user.address[0];
    console.log(id);
    let addresses = await Address.findById(id);
    console.log(user);
    if (!addresses) {
      res.status(404).json({
        message: "No Address Found",
        success: false,
      });
      return;
    }

    res.status(200).json({
      message: `Welcome Back`,
      addresses,
      success: true,
    });
  } catch (error) {
    console.log(error);
    ErrorHandler(res, error);
  }
};

字符串
用户数据:-

{
  _id: new ObjectId('657be59e80baafa1288a5169'),
  firstName: '***',
  lastName: '**',
  email: '*******@gmail.com',
  password: '$2a$10$cfJUXElsffQaM6T0QCA03O5XomIyVhLgALE3auxQzkpgCysJLY0Ei',
  address: [
    new ObjectId('657da734d4f75aa0f22a051e'),
    new ObjectId('657da86fd4f75aa0f22a053a'),
    new ObjectId('657da8e0d4f75aa0f22a054e'),
    new ObjectId('657da9fbd4f75aa0f22a0552'),
    new ObjectId('657daa22d4f75aa0f22a0556')
  ],
  cart: [],
  __v: 0
}


现在你可以看到我已经在用户的个人资料地址,即使在这之后,如果我试图获取一个地址使用地址功能,它仍然抛出错误

owfi6suc

owfi6suc1#

  1. mongoose是否已安装并导入?
    1.在这一行中,你从req对象(而不是mongoose)中提取数据,所以使用'await'不是必要的:
let id = user.address[0];

字符串
在这方面,必须:

let addresses = await Address.findById(id);


1.最有可能的是,您应该访问req.body.user,而不是req.user
但是,您发送到名为User或UserData的请求中的对象是什么?
1.你有没有试过把对象id引用为mongoose.Types.ObjectId
关于mongoose objectId:ObjectId的输出是一个复杂类型(包含value-kay对)。
当插入到数据库时-预期的类型应该是<mongoose.Schema.Types.ObjectId>,然后不需要转换。尝试读取或比较ObjectId -需要添加.toHexString()(因为它是一个复杂类型)<User.address[0].toHexString()>
1.打印时,它应该是这两个选项之一:

console.log(id.toHexString());

console.log(req.body.user.address[0].toHexString());

b09cbbtk

b09cbbtk2#

您应该将ObjectId转换为字符串。

let id = await user.address[0]; // The type of id is ObjectId.
console.log(id);
let addresses = await Address.findById(id.toString()); // Convert ObjectId to string

字符串

相关问题