我有User
模型和两个不同的关联模型Profile
,WorkProfile
。 profile
模型包含有关用户线路名称,电子邮件,家庭住址e.t.c的一般信息,workprofile
包含当前办公地址,办公室电话,办公室电子邮件等详细信息。用户模型存储这两者中的objectID
,并使用profile
和workprofile
键引用它们。
现在我要构建的是基于这些关联模型中的字段对用户模型进行高级搜索。我看到的一种方法是单独查询它们,然后使用_.concat
加入结果。但问题是我无法在最终结果上实现skip
或limit
以获得正确的分页。适当分页的最佳方法是什么?
答案 0 :(得分:0)
而不是在配置文件和工作配置文件中使用ref
您可以将其添加到用户,如下所示,这允许将查找方法与profile.name
等一起使用。
var ProfileSchema = mongoose.Schema({
name: String
});
var WorkProfileSchema = mongoose.Schema({
email: String
});
var UserSchema = mongoose.Schema({
profile: ProfileSchema,
work_profile: WorkProfileSchema
});
var User = mongoose.model('User', UserSchema);
var user = new User({
profile: {name: 'Molda'},
work_profile: { email: 'my@email.com'}
});
user.save(function(err, u) {
User.findOne({'profile.name':'Molda'},function(err, user) {
console.log('user', user);
})
});
甚至使用简单的对象
var UserSchema = mongoose.Schema({
profile: {
name: String
},
work_profile: {
email: String
}
});
这可能不总是好主意,但它是可能的。