如何在猫鼬中对组合结果进行分页?

时间:2016-02-29 17:59:52

标签: javascript node.js mongoose pagination

我有User模型和两个不同的关联模型ProfileWorkProfileprofile模型包含有关用户线路名称,电子邮件,家庭住址e.t.c的一般信息,workprofile包含当前办公地址,办公室电话,办公室电子邮件等详细信息。用户模型存储这两者中的objectID,并使用profileworkprofile键引用它们。

现在我要构建的是基于这些关联模型中的字段对用户模型进行高级搜索。我看到的一种方法是单独查询它们,然后使用_.concat加入结果。但问题是我无法在最终结果上实现skiplimit以获得正确的分页。适当分页的最佳方法是什么?

1 个答案:

答案 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
    }
});

这可能不总是好主意,但它是可能的。