Mongoose:对于值[{“someKey”:“someValue”}],转换为对象数组失败

时间:2017-06-11 14:14:59

标签: 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]
});

休息一切都很好,但是将任何内容放入upvoted_by_usersdownvoted_by_users,我都会收到此错误:

[ERROR] Trace- CastError: Cast to [ObjectId] failed for value "[{"userName":"Vibhu","userId":"3833d1g870feaf4a38723"}]" at path "upvoted_
by_users"

我很确定我对架构本身做错了什么,但我不知道是什么。

任何帮助都将不胜感激。

1 个答案:

答案 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);

希望它有所帮助,
最好的问候,