构建复杂的Model.find请求

时间:2015-09-08 13:12:47

标签: node.js express sails.js waterline

我正在使用Sails.js构建API

目前我正在执行原始sql请求以查找状态列表:

        Status.query("SELECT Status.* FROM Status,User where Status.user = User.id and User.isPrivate = false group by status.id  order by status.id desc limit "+limit+" offset "+offset, function(err, status) {
            if(err) return next(err);


            console.log(status)
            console.log(res)
            res.json(200,status);
        });

2个问题:

1-这是原始SQL所以我将无法切换到Mango或其他任何东西,因为我的代码链接到我的数据库选择 2- Model.find自动加载关系(这里是Status.user和Status.find)和原始sql只加载ID

2-我正在寻找使用Model.Find构建“复杂”请求的语法,让我得到与原始sql完全相同的结果,并且还可以执行类似

的操作
AND:
[
    {
    or:
        [ 
            {a=1,b=2},
            {a=2,b=1}
        ]
    },
    {c=6}
]

1 个答案:

答案 0 :(得分:3)

好的,我成功找到了怎么办!

所以目标是转换此请求:

Status.query("SELECT Status.* FROM Status,User where Status.user = User.id and User.isPrivate = false group by status.id  order by status.id desc limit "+limit+" offset "+offset, function(err, status) {
            if(err) return next(err);


            console.log(status)
            console.log(res)
            res.json(200,status);
        });

在mysql状态下使用Sails.js语法的Model.find请求。你去了:(没有分页,但很容易找到怎么做)

Status.find({}).populate('user',{isPrivate:'false'}).exec(function(status,err){
                if(err) return next(err);


                console.log(status)
                console.log(res)
                res.json(200,status);
            });

玩得开心!