我尝试使用Mongoose更新UserSchema中名为watched_movies_list
的对象数组。通过使用$push
对象,通过传递_id: req.body.id
来给定用户ID。但是,当我尝试更新watched_movies_list
字段时,我得到了如下的转换错误。
reason: CastError: Cast to ObjectId failed for value "{
title: 'Luck',
overview: 'Suddenly finding herself in the never-before-seen Land of Luck, the unluckiest person in the world must unite with the magical creatures there to turn her luck around.',
poster_path: '/1HOYvwGFioUFL58UVvDRG6beEDm.jpg',
original_title: 'Luck',
original_language: 'en',
id: 550,
release_date: '2022-08-05',
genre_ids: undefined
}" (type Object) at path "movie_meta_data" because of "BSONTypeError"
这是我的UserSchema:
watched_movies_list: [{
movie_meta_data: {
type: Schema.Types.ObjectId,
ref: "MovieDataSchema"
},
rating: {type: Number}
}]
这是POST路由:
try {
const user = await User.findOneAndUpdate(
{_id: req.body.id},
{ "$push": { watched_movies_list: watchedMovie }});
res.status(200).json({
success: 'true',
user: user
})
} catch (err) {
res.status(400).json(err);
throw err;
}
1条答案
按热度按时间wyyhbhjk1#
您正在尝试将一个“对象”推入
watched_movies_list
数组。不幸的是,此数组被定义为ObjectId数组。您必须首先将对象存储在MovieDataSchema
集合中,然后仅将_id推入数组,或者将watched_movies_list
定义为MovieDataSchema对象的数组(从而作为嵌套文档)。在收到以下评论的反馈后更新:
为了具有嵌套文档,应按如下方式定义架构:
之后,您应该能够进行以下函数调用:
或者,如果要包括您的评分,则应按如下方式包括: