当您的功能允许您一起更新多个内容时,更新Mongoose集合中的记录是一件棘手的事情。假设您只想更新记录的5个关键值中的3个。这是一个简单的方法 -
const params = CampaignBatchProspectUtil.sanitiseParams({
prospect: prospectId,
campaignBatch: campaignBatchId,
type,
status: { $ne: CampaignBatchProspectStatus.REMOVED },
});
在上面的代码中,prospectId
,campaignBatchId
和type
ast as as as aigation。如果我们通过上述任何一个传递零值,记录本身将使用我们不想要的空值进行更新。我们只需要更新的非挂钩属性。
这是在萨尼炎的功能中的照顾的 -
static sanitiseParams<T>(params: T): T {
const sanitisedParams: Partial<T> = {};
Object.keys(params).forEach((key) => {
if (params[key] !== null) {
sanitisedParams[key] = params[key as keyof T];
}
});
return sanitisedParams as T;
}
我们使用了仿制药,以便在消毒后保存参数的类型。消毒函数仅返回非无效键和值。
然后可以将其传递到 -
之类的东西中
await CampaignBatchProspectRepository
.campaignBatchProspectDB
.findOneAndUpdate(
filterParams,
params,
{ new: true }
);
我们可以将sanitiseParams
函数进一步移动到一个通用的util文件中,如果需要,可以在模块上使用。