我有一个名为"作者"的模型。它有两个属性。
firstName: {
type: 'string',
unique: true
},
lastName: {
type: 'string',
unique: true
}
所以我想插入一个作者数组(firstName,lastName)。所以我用create方法来存储数据。
create: function (req, res) {
let authors = req.body.author_name;
let ids=[],i=0;
Author.create(authors,(err,author)=>{
if(err)res.json('err');
else res.json(author);
});
}
在author_name = [{'abc1','xyz1'},{'abc2','xyz2'}]
当我输入
时,它会正常运行 之后 author_name = [{'abc1','xyz1'},{'abc3','xyz3'}]
它不会工作。因为我提到名字和名字都应该是唯一的。数组的数据已经在数据库中但是数组的第二个参数不在数据库中。所以最后什么都不会存储。所以我想要也存储第二个参数。如果数组中的某些数据已经 数据库,那么它将被忽略,其他数据应该存储
那么如何以更好的方式做到这一点(如果可能的话不循环)
答案 0 :(得分:0)
我认为,您需要对输入数组执行查找查询,它会带来已有的记录,然后您需要从输入数据中排除它们,然后尝试插入唯一数据。
我希望它会对你有所帮助。
答案 1 :(得分:0)
我认为您误解了数据库的运行方式。无论您使用哪种数据库技术,Author
对象都由单行或记录表示。当您同时创建firstName
和lastName
个唯一字段时,这意味着名字永远不能重复,也不能使用姓名。因此,例如,您不能拥有“Bob Smith”和“Sara Smith”,因为这会重复使用姓氏。
在您的示例中输入的记录中,您没有提供名字或姓氏。它会创建一条记录,其中firstName
和lastName
都为空。由于这些字段是唯一的,因此不允许您创建任何其他名字为空的作者。
我认为您可能需要考虑是否希望这些字段是唯一的,如果通过Author
模型存储它真的是您想要的 - 我在理解您的意思时遇到了一些麻烦“存储第二个参数“但是”忽略第一个“。也许你真的只想存储一个名单,而不是Author
个对象?