NodeJS,Mongoose – 插入数据时的重复条目

我有Mongoose的NodeJS,我正在访问一个API来检索数据。 我有一个Schema如下。

var dataSchema = new Schema({ id:Number, name:String )); 

而我正在使用下面的代码来插入。

  var d = Data.find({id:data.id}, function(error, curr_data) { if(curr_data.length == 0) { // check to make sure only unique entries are entered console.log(" Inserting : " + curr_data.name); new Data(data).save(); } }); 

但是,当我检查我的Mongo DB,我仍然可以看到重复的条目。

有没有其他方法?

您可以使用Mongo的内置count()方法来检查行是否存在,并从中有条件保存模型:

 Data.count({id: data.id}, function (err, count) { if (!count) { console.log("Inserting " + curr_data.name); new Data(data).save(); } else { // Handle err. console.log('Already Exists'); } }); 

你不需要为你的模式添加一个id,Mongoose为你创build一个ObjectId。

“Mongoose默认为每个模式分配一个_id字段,如果没有传递给模式构造函数,被触发的types是一个ObjectId,与MongoDB的默认行为一致,如果你根本不需要添加_id,你可以使用这个选项来禁用它。“ – 来自Mongoose文档

如果您确实想要指定您自己的ID,则可以执行以下操作以确保不会创build重复项:

 var dataSchema = new Schema({ id: { type: Number, index: { unique: true } }, name: String }, { _id: false });