【问题标题】:db.all function doesn't return as an array variabledb.all 函数不作为数组变量返回
【发布时间】:2019-10-30 20:45:40
【问题描述】:

我想从 db.all 函数接收一个数组,以便在我想将其作为响应返回的自定义 JSON 对象中使用它

我试过了 对象.值(成员); members.fulfillmentValue; 我在 StackOverFlow 中找到的一些 PROMISE 方法

app.get('/group/:groupId', (req, res, next) => {

    const members= db.all('SELECT name,active FROM members WHERE groupId = ?;', req.params.groupId);

    return db.get('SELECT * FROM groups WHERE groups.id = ?;',req.params.groupId)
     .then(group =>  res.json({
         group.name,
         members:[members]
        }))
        .catch(next);
});

实际反应

{
   "name":"group 1",
   "memebers":[
      {"isFulfilled":true,"isRejected":false,"fulfillmentValue":[
         {"name":"Member 1","active":1},
         {"name":"Member 2","active":0}
      ]
   }]
}

预期的反应

{
   "name":"group 1",
   "memebers":[
      {"name":"Member 1","active":1},
      {"name":"Member 2","active":0}
   ]
}

【问题讨论】:

  • db.all(类似于db.get)正在返回一个Promise;您需要使用回调或链式.then(...) 来检索结果。考虑像@​​987654321@ 这样的事情,这样您就可以运行这两个查询并在它们都完成时对结果采取行动。
  • 谢谢@TylerRoper 我在链接中尝试了 Promise all 我得到了这个错误 ``` TypeError: [object Object] is not iterable at Function.all () ``` 谢谢@AluanHaddad 我已经在链接中尝试了几个,你给我发送了几个返回空和几个返回错误

标签: javascript sql node.js json express


【解决方案1】:

我已经通过添加异步解决了它

app.get('/group/:groupId', async (req, res, next) => {

    const members= await db.all('SELECT name,active FROM members WHERE groupId = ?;', req.params.groupId).then();

    return db.get('SELECT * FROM groups WHERE groups.id = ?;',req.params.groupId)
     .then(group =>  res.json({
         group.name,
         members:members
        }))
        .catch(next);
});

感谢所有试图提供帮助的人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多