更新所有行,然后发送响应sequelize

时间:2017-05-30 16:03:08

标签: javascript node.js sequelize.js

我很擅长在Node中完成这类任务。我有一个POST方法(快速),它会重现一系列对象,如:

[{F1:'123',F2:'a',F3:'b',F4:'Z'},
{F1:'124',F2:'a',F3:'b',F4:'Z'},
{F1:'125',F2:'a',F3:'b',F4:'Z'},
{F1:'126',F2:'a',F3:'b',F4:'Z'},]

然后,我需要对数组中的每个对象进行更新。 我正在使用sequelize:

MODEL.update(
    {
        att4: art['F4'],
    },
    {
    where:{
            att1: {$eq: art['F1']}
          }
    }).then(function(result)
    {        
        res.status(200).send();

    }).catch(function(err)
    {
        res.status(500).send(err);
    }) 

这适用于1个对象。

但是我需要以下内容:当处理所有更新时,然后发送回复。

我尝试

req.body.forEach(function(o)
    {
        updateO(o)
    },this);

并在updateO(o)中执行Model.Update,但是我没有达到所需的结果。

抱歉英语不好,希望能理解我,谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

阅读承诺,所有Sequelize的函数都返回promises,你可以通过Promise.all来处理多个查询。

var objects = req.body;
Promise.all(objects.map(object=>{
    return MODEL.update({att4: object.F4},{where:{att1: object.F1});
})).then(function(result){        
    res.status(200).send();
}).catch(function(err){
    res.status(500).send(err);
})