【问题标题】:Sequelize build() and update instead of query and update/bulk updateSequelize build() 和更新而不是查询和更新/批量更新
【发布时间】:2019-03-29 08:23:43
【问题描述】:

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

例子:

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 和更新。

【问题讨论】:

    标签: sequelize.js


    【解决方案1】:

    在研究/玩了一下之后找到了答案。

    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 没有答案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      相关资源
      最近更新 更多