我需要在我的应用程序中实现Clone函数。克隆功能将复制实际寄存器,并在其中添加“复制”文本。让我们举个例子:
该应用程序基于MongoDB / Mongoose:
> db.customers.find().pretty();
{
"_id" : ObjectId("5b3a6e74973d5014df9d7d41"),
"name" : "ACME Company",
"code" : "ACME",
"description" : "ACME
"createdAt" : 1530556020029,
"__v" : 0,
"updatedAt" : 1530556028241,
"deletedAt" : null,
}
要复制记录:
let cloneCustomer = async id => {
let customer = await CustomerModel.findById(id);
customer._id = null;
customer.name = customer.name + " - Copy";
customer.save();
}
我的问题是在插入新名称之前要确定它是否已经存在,因为name
是一个“唯一”键。因此,如果用户克隆一次并且没有更改名称,我将无法重新克隆它。
我看到应用程序将"Copy"
文本连接为"ACME - Copy - Copy"
甚至是"ACME - Copy(2)"
。
有没有一种方法可以在插入之前不搜索新文档(这会导致我在数据库上进行大量重复搜索)?