Nodejs Objection.js 条件补丁

Nodejs Objection.js conditional patch

我需要根据条件 运行 Objection.js 中的补丁(或更新)。我有这个代码:

if (leavenMachine.ping == true){
   MachinesInit.query()
                .patch({status: 'OK', online:"yes"})
                .where('machine', 'leaven machine')
                .where('type', 'M');
}else {
  MachinesInit.query()
                .patch({status: 'OK'})
                .where('machine', 'leaven machine')
                .where('type', 'M');
}

我需要重构它,这样我就不需要两个查询(一个在 if 条件内,第二个在 else 内),而只需要一个,将条件嵌入到 patch 方法中。可能吗?我该怎么办?

您可以将 patch 对象提取到变量中:

const patchData = (leavenMachine.ping == true) ? {status: 'OK', online:"yes"} : {status: 'OK'}

之后,只需调用查询:

MachinesInit.query()
            .patch(patchData)
            .where('machine', 'leaven machine')
            .where('type', 'M');

您可以将 patchData 的值直接传递给 patch 调用,但这样可读性更高。

希望这对您有所帮助。