在节点js中的rows.map()函数内调用execute()函数

时间:2016-09-28 13:18:12

标签: node.js cassandra

我有从下面的代码中获取的用户列表

const q = 'SELECT * FROM users WHERE tenant = ?'
  cassandra.execute(q, [tnid], (err, r) => {
    if (err) return res.end500(err)
    const u = r.rows.map(cred)
    const data = { users: u }
    res.end200(data)
  })

inside map()我在下面调用cred()

function cred(src)
{
 var data=src
 async.series([
    function(callback){
         hashs(src.name.full_name, callback)
    }
    ],
   function(err,res) {
      console.log("------res--------")
      if (err) {
          console.log(err)
          callback()
      }
      data.hash=res
      console.log(data)
      return data
     })
}

async调用hashs()函数来获取特定用户所需的哈希值

function hashs(un,callback) {
  const q = SELECT hash FROM user_credentials WHERE username = ?
   cassandra.execute(q, un, (err, r) => {
    if (err) return err
    console.log(r.rows)
    callback(null,r.rows[0])
  })
callback(null,un)
}

但主要问题是,一旦我获得用户详细信息,第二个查询就不会被触发来获取哈希值,因此我没有从第二个表中获取哈希值。

这是在SQL中命名为JOIN的相同概念,但我使用的是基于nosql的Cassandra,因此我无法在单个查询中获取特定用户的所有详细信息。

基本上我无法在cassandra.execute()

内拨打map()

0 个答案:

没有答案