【发布时间】:2019-09-12 02:16:03
【问题描述】:
我有一个正在使用 sequelize 构建的后端。我有一个会发出获取请求的路由器。我希望这个 get 请求以特定的顺序做一些事情。
我希望 get 请求从 Members 获取具有用户 ID 的所有记录。
然后,我想运行一个循环,该循环使用 Group 表发出请求,该表在 for 循环的每次迭代中具有组的 id。
问题:我创建了一个数组,我想将 group 中每个请求的每个返回对象推送到单个数组 groups 中,然后在迭代完成后返回它,状态码为 200
代码如下:
控制器功能:
getUserMember: (req, res) => {
let groups = [];
let user_id = req.params.userId
Member.findAll({ where: { userId: user_id } })
.then((response) => {
for(let i = 0; i < response.length; i++){
Group.findByPk(response[i]['groupId'])
.then((group) => {
console.log(JSON.stringify(group))
groups.push(JSON.stringify(group))
})
.catch((err) => {
console.log('Getting Group by Id error: ' + JSON.stringify(err))
})
}
console.log(groups)
res.status(200).send(data)
})
.catch((err) => {
console.log('Getting member by Id error: ' + JSON.stringify(err))
})
},
记录响应:
Executing (default): SELECT "id", "balance", "open_tabs", "reference", "admin", "active", "DATE", "groupId", "userId" FROM "members" AS "member" WHERE "member"."userId" = '2';
[]
Getting member by Id error: {}
Executing (default): SELECT "id", "name", "description", "members", "reference", "active", "DATE", "HostId" FROM "groups" AS "group" WHERE "group"."id" = 1;
Executing (default): SELECT "id", "name", "description", "members", "reference", "active", "DATE", "HostId" FROM "groups" AS "group" WHERE "group"."id" = 3;
{"id":1,"name":"The Boys","description":null,"members":1,"reference":"32nv893f","active":true,"DATE":"2019-09-10T08:25:03.898Z","HostId":null}
{"id":3,"name":"testing2","description":"test of the homies","members":1,"reference":"scwc8s89","active":true,"DATE":"2019-09-11T06:01:40.978Z","HostId":2}
如你所见,我得到了 2 个对象,但它们没有推入组中
【问题讨论】:
-
因为你的
console.log(groups)不在then里面 -
我希望它在所有
group查询完成后返回组。发送的返回也是[]。它不是将数据推送到组数组中,这是我的问题,不是 console.log @AyushGupta
标签: javascript node.js sequelize.js