Mongoose 通过父级保存时,不会保存我的子文档

Mongoose 通过父级保存时,不会保存我的子文档,mongoose,Mongoose,我在尝试通过父文档保存子文档时遇到了一些问题,然后是正式文档 var UserSchema = new mongoose.Schema({ name: String, Animals : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Animal' }], }); var AnimalSchema = new mongoose.Schema({ name: String }); 我以前是这样工作的: function(User, c

我在尝试通过父文档保存子文档时遇到了一些问题,然后是正式文档

var UserSchema = new mongoose.Schema({
  name: String,
  Animals : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Animal' }],
});

var AnimalSchema = new mongoose.Schema({
  name: String
});
我以前是这样工作的:

function(User, callback) {
  var Animal = new AnimalSchema({ name: 'bob' });
  Animal.save(function() {
    User.Animals.push(Animal._id);
    User.save(callback);
  });
}
一切都很顺利,但我从医生那里看到我们可以写:

function(User, callback) {
  var Animal = new AnimalSchema({ name: 'bob' });
  User.Animals.push(Animal);
  User.save(callback);
}
但我不能百分之百地工作:

我的子文档嵌套在我的文档中,但我无法
find()
it,它作为常规键是父文档的一部分

另外,当我有另一个嵌套的bloc时,比如:

var UserSchema = mongoose.Schema({
  name: String,
  Animals : {
    dogs: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Animal' }],
    cats: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Animal' }]
  }
});
我确实:

function(User, callback) {
  var Animal = new AnimalSchema({ name: 'bob' });
  User.Animals.dogs.push(Animal);
  User.save(callback);
}
在我的
User.dogs
数组中,我只有一个
ObjectId
作为项(由于与上面相同的原因,我无法填充该项)

我错过什么了吗?我使用的是Mongoose3.8,他们说我们应该能够用这种方式查询tu子文档

我们真的需要两组指针是有争议的,因为它们可能会不同步。相反,我们可以跳过填充,直接查找()我们感兴趣的故事。