如何在没有填充文件的情况下:在ObjectId中将其投射然后填充

时间:2015-07-14 20:06:29

标签: mongodb mongoose

我想避免这种情况(见下面的评论):

var UserSchema = Schema({
  name: String
});

var UserGroupSchema = Schema({
  users: [ { type: Schema.Types.ObjectId, ref: 'user' } ]
});

var user = new User({ name: 'John' });

var userGroup = new userGroup();

userGroup.users.push(user); // auto cast user in its objectId ! How to avoid that ?

UserGroup.populate(userGroup, { path: 'users', model: 'User' }); // Get back the user object (this step should be obsolete)

我不想宣布:

var UserGroupSchema = Schema({
  users: [ User ]
});

因为我希望能够在不查看UserGroups的情况下找到我的用户。

我真的希望有一些东西要避免,因为我不知道如何以这种方式编写干净的代码。

1 个答案:

答案 0 :(得分:0)

  

因为我希望能够在不查看UserGroups的情况下找到我的用户。

具体而言,这意味着您只能使用引用,这意味着在将引用推送到(并保存)UserGroup实例之前,单独保存新用户。

我假设用户可以属于多个UserGroup,这意味着无论如何都不能使用subdoc(users : [ User ]变体)。