Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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 如何使用空数组作为属性更新文档?_Node.js_Mongodb_Mongoose - Fatal编程技术网

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的代码。