我正在尝试查找具有登录用户id的对象。
function getItems(req, res) {
var userId = JSON.stringify(req.user._id);
Items.find({user_id: userId}, function(err, items) {
if (err) {
res.send(err)
}
else {
res.json(items);
}
});
}
// Logged-in user
app.get('/userItems', isLoggedIn, function(req, res) {
getItems(req, res);
});
用户json数据如下:
"_id": {
$oid": "55c772bce97e9a500b3754ae"
}
项目对象是这样的:
{
"_id": {
"$oid": "55d086a182377f840844ee78"
},
"user_id": "55c772bce97e9a500b3754ae",
itemSpecs:[
//...
]
}
它返回空数组,因为userId不匹配user_id我猜。当我尝试设置:
var userId = '55c772bce97e9a500b3754ae';
返回带有userId的项。
var userId = JSON.stringify(req.user._id);
console.log(typeof userId); // >> String
所以,来自user object的userId和来自items object的user_id是同一类型的:String。
可能这真的很愚蠢,但我看不出为什么用户_id对象与items对象中的user_id不匹配。
我怎么能得到项目已登录的用户id使用登录的用户id从_id。美元oid对象?
当你调用JSON.stringify(req.user._id);
时,你得到string,它是一个ObjectID对象的JSON表示。它应该是沿着"{ "$oid": "55c772bce97e9a500b3754ae" }"
这条线的东西,与"55c772bce97e9a500b3754ae"
不同。
要获取ObjectId的十六进制表示,请使用req.user._id.toHexString()
。