Node.js 如何使用空数组作为属性更新文档?
每当我有一个带有数组的模式,而数组的元素有一个潜在的模式时,每当我试图用一个空数组作为值更新文档时,就会收到一个错误。如何为这些数组元素提供模式而不出现此错误 模式示例:Node.js 如何使用空数组作为属性更新文档?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,每当我有一个带有数组的模式,而数组的元素有一个潜在的模式时,每当我试图用一个空数组作为值更新文档时,就会收到一个错误。如何为这些数组元素提供模式而不出现此错误 模式示例: tags: { type: [String], "default": [] } //or tags:[ {type:String} ] MyModel.findOneAndUpdate({something:true},{tags:[]},callback); [TypeError: Cannot read proper
tags: { type: [String], "default": [] }
//or
tags:[ {type:String} ]
MyModel.findOneAndUpdate({something:true},{tags:[]},callback);
[TypeError: Cannot read property 'schema' of undefined]
请求示例:
tags: { type: [String], "default": [] }
//or
tags:[ {type:String} ]
MyModel.findOneAndUpdate({something:true},{tags:[]},callback);
[TypeError: Cannot read property 'schema' of undefined]
示例错误:
tags: { type: [String], "default": [] }
//or
tags:[ {type:String} ]
MyModel.findOneAndUpdate({something:true},{tags:[]},callback);
[TypeError: Cannot read property 'schema' of undefined]
我的环境:
tags: { type: [String], "default": [] }
//or
tags:[ {type:String} ]
MyModel.findOneAndUpdate({something:true},{tags:[]},callback);
[TypeError: Cannot read property 'schema' of undefined]
- 节点0.10.6
- mongodb 2.4.4
- 猫鼬3.8.9
- 不能说相同的基本原理产生相同的结果:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
mongoose.connect('mongodb://localhost/test');
var exampleModel = new Schema({
something: Boolean,
tags: { type: [String], default: [] }
});
var MyModel = mongoose.model( 'Model', exampleModel );
MyModel.findOneAndUpdate(
{ something: true },
{ tags: [] },
{ upsert: true },
function( err, doc ) {
console.log( doc )
}
);
这给了我一个结果:
{ _id: 5370b44e718592ba9206979c, something: true, tags: [] }
嗯,当我运行复制/粘贴到节点repl并将错误添加到console.log中的代码时,我收到了与上面提到的相同的错误。我正在使用Mongo2.4.4、Mongoose 3.8.9和Node 0.10.6。@bendalton我刚刚将您的确切版本复制到虚拟机上,我无法复制。node和MongoDB版本都比较旧,但仍然没有区别。您一定在代码中做了其他一些您没有在这里说明的事情。非常感谢您的关注。我一辈子都搞不清楚还有什么会干扰我。我逐字输入节点;并复制/粘贴代码。我也会和办公室周围的人核实一下。其他人能独立验证我们的结果吗?我用节点0.10.26、Mongo 2.4.10和Mongoose 3.8.2复制了这一结果,使用下面@Neil Lunn的代码。