Javascript 迭代sequelize查询结果集(Hapijs)

Javascript 迭代sequelize查询结果集(Hapijs),javascript,sequelize.js,hapijs,Javascript,Sequelize.js,Hapijs,我有一个返回结果的代码。通常,当我收到结果时,我会将其发送到客户端,并将其转换为纯JSON对象 但是现在我需要对结果集执行一些操作,然后在数据库中执行另一个查找 我不明白的是结果集的结构。如何正确地迭代它。我可以使用for循环手动提取值,但我觉得这不是实现的方法 这是返回结果的代码: models.Results.findAll({ where: {ProjectId: projectId} }) .then(function (resu

我有一个返回结果的代码。通常,当我收到结果时,我会将其发送到客户端,并将其转换为纯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);
        });

图显示调试模式下的结果。它在数组中有4个对象:

当您使用
model.findAll
时,返回的
resultset
是一个数组。如果您只想获取感兴趣的内容(表中的实际值),可以迭代
resultset
并调用每个项,传递一个值为
plain:true
的选项对象

resultset.forEach((resultSetItem) => {
    console.log(resultSetItem.get({
        plain: true
    }));
});

您希望避免forEach操作,因为NodeJS在单个线程上运行。这很好,因为它迫使我们以不同的方式编写代码。想象一下,当forEach因为贪婪的同步操作而占用CPU时。我们需要共享资源,并始终考虑并行运行

迭代一个数组或一个数组的承诺,该数组包含承诺(或承诺和值的混合)和给定的带签名(值、索引、长度)的迭代器函数其中value是输入数组中相应承诺的解析值。迭代按顺序进行。如果迭代器函数返回承诺或表,则在继续下一次迭代之前等待承诺的结果。如果输入数组中的任何承诺被拒绝,则返回的承诺将被拒绝“很好。”

这段代码本质上是等待检索上一条记录,然后再继续下一条记录。因此,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
        })
    })
}
wait Request.findAll({
其中:{
S_Id:13,
客户Id:req.body.Customer\u Id,
}
}).然后(函数(结果){
res.send(结果[0][“卡号”])

quitFunction.status=true;
而不是
for in
循环,尝试
resultset.forEach(函数(结果){//result应该是具有您要查找的属性(dataValues、hasPrimaryKeys等)的对象);
db.Promise
在Sequelize中不是本机的,这正是OP所要求的。