每当我尝试将具有此架构的文档保存到我的数据库中时,我都会收到错误:
var schemaForBooks = new Schema({
book: String,
author: String,
who_has_this: Object,
points: Number,
upvoted_by_users: [Schema.Types.ObjectId],
downvoted_by_users: [Schema.Types.ObjectId]
});
休息一切都很好,但是将任何内容放入upvoted_by_users
或downvoted_by_users
,我都会收到此错误:
[ERROR] Trace- CastError: Cast to [ObjectId] failed for value "[{"userName":"Vibhu","userId":"3833d1g870feaf4a38723"}]" at path "upvoted_
by_users"
我很确定我对架构本身做错了什么,但我不知道是什么。
任何帮助都将不胜感激。
答案 0 :(得分:1)
错误表示您正在尝试将以下对象数组{"userName":"Vibhu", "userId":"3833d1g870feaf4a38723"}
强制转换为ObjectId
数组。
因此,您需要删除userName
字段,这样您就可以将String
+ ObjectId
的数组转换为ObjectId
数组。
您可以使用js数组上的Array#map
方法执行此操作,例如:
var arr = [{"userName":"Vibhu","userId":"3833d1g870feaf4a38723"}];
var myCorrectArr = arr.map(field => field.userId);
希望它有所帮助,
最好的问候,