地址功能:-
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
}
型
现在你可以看到我已经在用户的个人资料地址,即使在这之后,如果我试图获取一个地址使用地址功能,它仍然抛出错误
2条答案
按热度按时间owfi6suc1#
1.在这一行中,你从req对象(而不是mongoose)中提取数据,所以使用'await'不是必要的:
字符串
在这方面,必须:
型
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.打印时,它应该是这两个选项之一:
型
b09cbbtk2#
您应该将ObjectId转换为字符串。
字符串