序列化build()和更新,而不是查询和更新/批量更新

时间:2019-03-28 23:50:46

标签: sequelize.js

是否可以构建记录实例,设置主键/更新属性并更新实例?

示例:

exports.updateModel = async (event, context) => {
    const body = JSON.parse(event.body);
    const errors = validate(body, updateSchema).errors;
    if (errors && errors.length > 0) {
        return error(httpCodes.badRequest, 'Invalid Request');
    }

    let model = db.Model.build();

    const result = await model.update({
        id : body.modelId,
        column : body.newValue
    });

    return ok({model : result});
}

但是,当我这样做时,我得到一个关于外键为空的错误。现有记录已经设置了此设置,我不会在此更新调用中覆盖它。

  

“ errorMessage”:“列\” foreign_id \“中的空值违反了非空约束”

我知道我可以批量更新,并查询单个记录和更新,但是我很好奇是否有可能建立通用模型,设置id和更新。

1 个答案:

答案 0 :(得分:0)

经过一番研究/玩耍,找到了答案。

build函数中有一个参数,该参数采用名为options的对象。 options的属性isNewRecord默认为true。如果将其设置为false并使用update(),它将在设置主键后更新现有记录。

let instance = await db.Model.build({}, {isNewRecord: false});
const result = await instance.update({
    id: instanceId,
    column : newValue
});

source

几年前看起来还this question has been asked,却没有答案