代码之家  ›  专栏  ›  技术社区  ›  TemporaryFix

sequelize build()和update,而不是query和update/bulk update

  •  0
  • TemporaryFix  · 技术社区  · 5 年前

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

    例子:

    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 回复  |  直到 5 年前
        1
  •  0
  •   TemporaryFix    5 年前

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

    中有一个参数 build 接受名为 options . 选项 有一个属性 isNewRecord 默认为真。如果将此设置为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 几年前没有答案