使用sequelize获取下一条记录

时间:2015-09-14 13:50:56

标签: javascript mysql node.js asynchronous sequelize.js

你知道是否有一种简单的方法可以使用sequelize获得下一张唱片? 我返回一个对象,我想进行第二个查询以获取下一个对象。如果它不存在那么我可能应该创建一个原始查询。

编辑:

我的问题可能被误解了。我问过是否有可能获得数据库中的下一条记录。

例如,如果我们有这个表

1 foo
2 bar
3 foobar
4 barfoo
5 ...

然后我得到了第一个元素然后我想进行一个查询,我得到下一个元素,它将成为数据库中的第二个记录

2 个答案:

答案 0 :(得分:0)

要使用其他查询,您需要使用回调。

请遵循以下示例:

var query = "SELECT * FROM foo";
sequelize.query(query, {
    type: sequelize.QueryTypes.SELECT
         }).success(function (query1) {
            done = _.after(query1.length, function () {
               callback(query1)
            })

query = "SELECT * FROM foo2";
sequelize.query(query, {
    type: sequelize.QueryTypes.SELECT
    }).success(function (query2) {
        console.log(query1);
        console.log(query2);
    });
 });

这样就可以实现多次查询。

答案 1 :(得分:0)

这取决于你正在使用的续集版本。 1.7中有QueryChainer: http://sequelize.readthedocs.org/en/1.7.0/docs/utils/

但是从2.1.0:

  

[DEPRECATED]不推荐使用query-chainer,将其删除   版本2.2。请改用promises。

所以你可以使用原始查询或做一些递归函数:

var queries = ['SELECT ...', 'SELECT ...', ...];
var ql = queries.length();
var i = 0;

function doSomethingWithResult(result)
{
    // 
};

function executeQuery(result)
{
    if(result)
        doSomethingWithResult(result)

    if(i < ql){
        sequelize.query(queries[i]).spread(executeQuery);
        i += 1;
    }
}

executeQuery();