据我说,当我按下'ABC'而不是objectId时,它应该显示诸如
对对象ID的投射失败,其路径“喜欢”的值为“ ABC” 。
但是当我打印更新的数据时,我在喜欢数组中看到一些未知的objectId
我的问题是,那个未知的objectId(6a61736f6e20626f75726e65)是什么以及为什么生成它
自动
用户模型
new Schema({
name: { type: String,required:true},
}, { usePushEach: true ,timestamp:true});
饲料模型
new Schema({
user: { type: Types.ObjectId, ref: 'user', required: true },
name: { type: String,default:null, trim: true },
likes: [{ type : Types.ObjectId, ref: 'user',}],
}, { usePushEach: true ,timestamp:true});
var data = await feed.findByIdAndUpdate(
postId,
{
$push: { likes: 'ABC' }
}
);
if(data){
var data = await feed.findById(postId);
console.log(data.likes);//["6a61736f6e20626f75726e65"]
}
OutPut:
["6a61736f6e20626f75726e65"]
答案 0 :(得分:0)
由于您要在String
中推送一个likes
而不是ObjectId
,所以会出现此错误。
您的架构清楚地表明,点赞是array of ObjectId
:
likes: [{ type : Types.ObjectId, ref: 'user'}],
因此您必须传递ObjectId
而不是用户的name
。
您必须这样做:
// Whenever you are pushing value in `likes` `array`,
// you need to get the `ObjectId` of the user who liked the feed.
let userId = <userId_of_Ishwar>;
var data = await feed.findByIdAndUpdate(
postId,
{
$push: { likes: userId }
});