Node.js Mongoose:对值[{quot;someKey";:“someValue";}]的对象数组的强制转换失败
每当我试图将具有以下架构的文档保存到数据库中时,就会出现错误:Node.js Mongoose:对值[{quot;someKey";:“someValue";}]的对象数组的强制转换失败,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,每当我试图将具有以下架构的文档保存到数据库中时,就会出现错误: 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] });
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]
});
Rest all很好,但如果将任何内容放入用户的投票结果为上档
或投票结果为下档
,则会出现以下错误:
[ERROR] Trace- CastError: Cast to [ObjectId] failed for value "[{"userName":"Vibhu","userId":"3833d1g870feaf4a38723"}]" at path "upvoted_
by_users"
我很确定我对模式本身做了一些错误,但我不知道是什么
任何帮助都将不胜感激。错误表明您正试图将以下对象数组
{“userName”:“Vibhu”,“userId”:“3833d1g870feaf4a38723”}
强制转换为对象数组
因此,您需要去掉用户名
字段,这样您就可以将字符串的数组
+ObjectId
转换为ObjectId
的数组
您可以在js数组上使用Array#map
方法来完成此操作,例如:
var arr = [{"userName":"Vibhu","userId":"3833d1g870feaf4a38723"}];
var myCorrectArr = arr.map(field => field.userId);
希望有帮助,
致以最诚挚的问候,{“userName”:“Vibhu”,“userId”:“3833d1g870feaf4a38723”},这就是您在数组中放置的内容吗?是的,我想这样做,但现在我知道了,我必须为此创建一个嵌套模式。我在这里太傻了。谢谢@boehm_s,你的回答没有直接回答我的问题,但让我明白了这一点。我把ObjectId
和一些通用的Object
对象混淆了