我想避免这种情况(见下面的评论):
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的情况下找到我的用户。
我真的希望有一些东西要避免,因为我不知道如何以这种方式编写干净的代码。
答案 0 :(得分:0)
因为我希望能够在不查看UserGroups的情况下找到我的用户。
具体而言,这意味着您只能使用引用,这意味着在将引用推送到(并保存)UserGroup实例之前,单独保存新用户。
我假设用户可以属于多个UserGroup,这意味着无论如何都不能使用subdoc(users : [ User ]
变体)。