Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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
Javascript 使用mongoose查找后如何更改子文档_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 使用mongoose查找后如何更改子文档

Javascript 使用mongoose查找后如何更改子文档,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一些类似下面使用mongoose的代码 var mongoose = require('mongoose'); var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/hoge'); var UserSchema = new Schema({ name: String, children: [ChildSchema], }); var ChildSchema = new Schema({ name:

我有一些类似下面使用mongoose的代码

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

mongoose.connect('mongodb://localhost/hoge');
var UserSchema = new Schema({
  name: String,
  children: [ChildSchema],
});
var ChildSchema = new Schema({
  name: String,
}, {_id: false});

var User = mongoose.model('User', UserSchema);
var Child = mongoose.model('Child', ChildSchema);

User.findOne({_id: '52299322fdbbdec515000001'}, function(err, user) {
  console.log(user);
  for (var i=0; i<user.children.length; i++) {
    var child = user.children[i];
    child.name = 'newchild';
  }
  user.save(function(err) {
    console.log(user);
    mongoose.disconnect();
  });
});
当我运行脚本时,它会在下面输出

{ name: 'u1',
  _id: 52299322fdbbdec515000001,
  __v: 0,
  children: [ { name: 'c2' } ] }

{ name: 'u1',
  _id: 52299322fdbbdec515000001,
  __v: 0,
  children: [ { name: 'newchild' } ] }
但我在mongodb的记录没有改变。为什么?

仅供参考,如果我在保存前插入此代码,记录将更改

user.children.push({name: 'somechild'});

对不起,我已经决定了

问题在于声明模式的顺序

如果我尝试这个改变,它会起作用

/* first, children's schema */
var ChildSchema = new Schema({
  name: String,
}, {_id: false});

/* seconds, parent's schema */
var UserSchema = new Schema({
  name: String,
  children: [ChildSchema],
});
/* first, children's schema */
var ChildSchema = new Schema({
  name: String,
}, {_id: false});

/* seconds, parent's schema */
var UserSchema = new Schema({
  name: String,
  children: [ChildSchema],
});