RethinkDB - 一个接一个地运行查询

时间:2018-03-28 01:11:55

标签: javascript node.js rethinkdb

我在使用RethinkDB的单个连接中运行多个查询时遇到问题。我已经尝试了this问题中的r.do,但没有成功。我也尝试过使用条件更新查询。我要做的是:

  1. 打开连接。
  2. 查询我的字段是否存在以及是否存在,执行某些任务。
  3. 查询是否有计数字段,将其减一。
  4. 最好的方法是什么?看来我可能会遗漏一些东西?

    cdef extern from "<unordered_map>" namespace "std" nogil:
        cdef cppclass unordered_map[T, U]:
            # ... irrelevant stuff expunged ...
            bint operator==(unordered_map&, unordered_map&)  # Looks properly defined...
    

    在同一个连接中运行

    r.connect(config.rethinkdb, function(err, conn) {
        if (err) {
            throw err;
        }
        else {
            console.log('Connected.');
            app.set('rethinkdb.conn', conn);
        }
                r.table('upcs').filter({AcceptedUPC:data}).run(conn, (err, cursor) => {
                    if (err) throw err;
                    console.log(data);
                    cursor.toArray((err,resu) => {
                        if (err) throw err;
                        //make a csv with some information
                    })
                })       
    

    在NodeJS中运行

1 个答案:

答案 0 :(得分:1)

我将假设您正在使用此library for node

你可以实际上允许你做回调或承诺。我会建议承诺避免地狱的支架。

对于承诺,您可以使用bluebird库来简化生活。

您可以通过执行以下操作来完成此操作。

r.connect(config.rethinkdb).then(() => {
  console.log("Connected");
  app.set("rethinkdb.conn", conn);
  return r.table('upcs').filter({AcceptedUPC:data}).run(conn);
}).then((cursor) => {
   console.log(data); //maybe this should be cursor but I don't use rethinkDB
   return cursor.toArray();
}).then((resu) => {
   //make a csv with some information
}).catch((err) => {
   throw err;
});