我有一个返回结果的代码。 Normaly当我收到这个结果时,我将它发送给客户端,并将其转换为纯JSON对象。
但现在我需要对该结果集执行一些操作,然后在数据库中进行另一次查找。
我不理解的是结果集的结构。我如何正确地迭代它。我可以使用for循环手动提取值,但我感觉不是这样做的。
这是返回结果的代码:
models.Results.findAll({
where: {ProjectId: projectId}
})
.then(function (resultset) {
//How do I properly iterate over the resultset
for(p in resultset){
var a = p;
var something;
}
reply(resultset).code(200);
}, function (rejectedPromiseError) {
reply(rejectedPromiseError).code(401);
});
答案 0 :(得分:10)
使用model.findAll
时,返回的resultset
是一个model Instance
objects数组。如果你想获得有趣的东西(表中的实际值),你可以迭代resultset
并在每个项目上调用get
function,传递一个值为{{1的选项对象}}。
plain: true
答案 1 :(得分:1)
您要避免forEach操作,因为NodeJS在单个线程上运行。这很棒,因为它迫使我们进行不同的编码。可以想象一下,因为forEach是贪婪的同步操作,所以在forEach运行时它会占用CPU。我们需要共享资源,并始终考虑并行运行。
http://bluebirdjs.com/docs/api/promise.each.html
“在一个数组或数组的promise上进行迭代,其中包含promise(或promise和值的混合)以及给定迭代器函数的签名(值,索引,长度),其中value是被解析的值输入数组中的相应诺言。迭代串行发生。如果迭代器函数返回诺言或可忍受,则 然后等待诺言的结果,然后继续下一次迭代 。如果输入数组中的任何promise被拒绝,那么返回的promise也将被拒绝。”
从本质上讲,此代码等待上一条记录被检索,然后再继续下一条记录。因此,CPU越快,输出越快。
notification.sendAll = (message, cb) => {
db.models.users.findAll().then(users => {
db.Promise.each(users, user => {
console.log('user id: ' + user.id)
notification.sendMessage(message, ret => {
})
return
})
})
}
答案 2 :(得分:0)
await Request.findAll({
where: {
S_Id: 13,
Customer_Id:req.body.Customer_Id,
}
}).then(function (results) {
res.send(results[0]["CardNumber"])
quitFunction.status =true;
从续集返回的JSON对象
[
{
"id": 1,
"S_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-02T19:16:35.000Z",
"updatedAt": "2019-04-02T19:24:41.000Z"
},
{
"id": 2,
"S_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-02T19:24:48.000Z",
"updatedAt": "2019-04-02T19:35:26.000Z"
},
{
"id": 3,
"ServicAction_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-02T19:39:40.000Z",
"updatedAt": "2019-04-04T20:03:52.000Z"
},
{
"id": 4,
"ServicAction_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-04T20:08:11.000Z",
"updatedAt": "2019-04-04T20:08:11.000Z"
},
{
"id": 5,
"ServicAction_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-05T18:53:34.000Z",
"updatedAt": "2019-04-05T18:53:34.000Z"
},
{
"id": 6,
"S_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-05T18:54:32.000Z",
"updatedAt": "2019-04-05T18:54:32.000Z"
},
{
"id": 7,
"S_Id": 13,
"Customer_Id": 4,
"CardNumber": 345345,
"createdAt": "2019-04-05T18:54:57.000Z",
"updatedAt": "2019-04-05T18:54:57.000Z"
} ]