Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Mongoose:对值[{quot;someKey";:“someValue";}]的对象数组的强制转换失败_Node.js_Mongodb_Mongoose - Fatal编程技术网

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
对象混淆了