MongoDB 模型“”的路径“”中的值“”转换为 ObjectId 失败
MongoDB Cast to ObjectId failed for value "" at path "" for model ""
我有一个使用会话的简单代码,它检查会话中是否有 user_id 属性,然后使用它并使用 mongoose 数据库找到该用户。
这是代码:
let user_id = req.session.user_id;
if(user_id)
{
const user = await User.findById({ user_id });
req.user = user;
req.userobjs = await Utilities.GetAllObjs(req.user);
}
一个用户看起来像这样:
{
projects: {
journals: [
new ObjectId("61841e95088d9c1a65a8ddc9"),
new ObjectId("61841ee6088d9c1a65a8de13")
],
lists: []
},
_id: new ObjectId("61841e86088d9c1a65a8ddc4"),
username: 'dd',
password: 'b$CfEYYSDycuxO9Slv1C8Fu.WHOeiBgTiJfToOSUozMGNyWduZY5pLW',
__v: 6
}
而且,您可能认为来自会话的 user_id 字符串在代码中使用如下所示:
61841e86088d9c1a65a8ddc4
但问题是,在会话中使用有效 user_id 执行代码时,出现此错误:
UnhandledPromiseRejectionWarning: CastError: Cast to ObjectId failed for value "{ user_id: '61841e86088d9c1a65a8ddc4' }" (type Object) at path "_id" for model "User"[=25] =]
问题出在这里:
if(user_id)
{
let user = await User.findById({user_id});
req.user = user;
函数 Model.findById
只需要一个字符串参数,我通过 {}
绕过它。
它应该是这样的:
let user = await User.findById(user_id); //without {}
我有一个使用会话的简单代码,它检查会话中是否有 user_id 属性,然后使用它并使用 mongoose 数据库找到该用户。 这是代码:
let user_id = req.session.user_id;
if(user_id)
{
const user = await User.findById({ user_id });
req.user = user;
req.userobjs = await Utilities.GetAllObjs(req.user);
}
一个用户看起来像这样:
{
projects: {
journals: [
new ObjectId("61841e95088d9c1a65a8ddc9"),
new ObjectId("61841ee6088d9c1a65a8de13")
],
lists: []
},
_id: new ObjectId("61841e86088d9c1a65a8ddc4"),
username: 'dd',
password: 'b$CfEYYSDycuxO9Slv1C8Fu.WHOeiBgTiJfToOSUozMGNyWduZY5pLW',
__v: 6
}
而且,您可能认为来自会话的 user_id 字符串在代码中使用如下所示:
61841e86088d9c1a65a8ddc4
但问题是,在会话中使用有效 user_id 执行代码时,出现此错误:
UnhandledPromiseRejectionWarning: CastError: Cast to ObjectId failed for value "{ user_id: '61841e86088d9c1a65a8ddc4' }" (type Object) at path "_id" for model "User"[=25] =]
问题出在这里:
if(user_id)
{
let user = await User.findById({user_id});
req.user = user;
函数 Model.findById
只需要一个字符串参数,我通过 {}
绕过它。
它应该是这样的:
let user = await User.findById(user_id); //without {}