考虑这两个遵循相似的代码块:
const measurementsToDelete = await measurementRepo.find({
where: { noteId: note.id },
select: ['id']
});
const measurementIdsToDelete = measurementsToDelete.map(x => x.id);
if (measurementIdsToDelete.length > 0) {
await measurementRepo.delete(measurementIdsToDelete);
}
和
const measurementsToDelete = await measurementRepo.find({
where: { note: note.id },
select: ['id']
});
唯一的区别是在 where 子句中:
{ note: note.id }
(这是有效的,并且可以完成预期的工作){ noteId: note.id }
(这是无效的,并且会悄悄地跳过where子句)大小写“ b”确实很危险,尤其是当您将其提供给删除操作时。
这是一个问题(或潜在的功能请求):
我们可以在typeORM上设置一种模式吗?如果在where子句中放置无效的关系,则会引发错误?