Node.js 如何阻止数据库复制项目
我正在学习Nodejs和MongoDB,我成功地连接到数据库并保存到数据库正在工作,但如果我在列表中添加另一项,然后再次运行脚本以保存到数据库,它将复制已经存在的项。 我希望每当我需要添加一个新项来执行项目时,它只添加该特定项,而不是再次添加所有内容 这是我的播种机:Node.js 如何阻止数据库复制项目,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在学习Nodejs和MongoDB,我成功地连接到数据库并保存到数据库正在工作,但如果我在列表中添加另一项,然后再次运行脚本以保存到数据库,它将复制已经存在的项。 我希望每当我需要添加一个新项来执行项目时,它只添加该特定项,而不是再次添加所有内容 这是我的播种机: const mongoose = require("mongoose"); const Keys = require("../config/auth"); mongoose.set("useUnifiedTopology", t
const mongoose = require("mongoose");
const Keys = require("../config/auth");
mongoose.set("useUnifiedTopology", true);
mongoose.set("useNewUrlParser", true);
mongoose.connect(Keys.MongoURI);
const products = [
new Product({
imagePath:
"test",
title: "test1",
description: "test1",
price: 20
}),
new Product({
imagePath:
"test2",
title: "test2",
description: "test2",
price: 20
})
];
let done = 0;
for (let i = 0; i < products.length; i++) {
products[i].save(function(err, result) {
done++;
if (done === products.length) {
exit();
}
});
}
function exit() {
mongoose.disconnect();
}
console.log(products);
const mongoose=require(“mongoose”);
const Keys=require(“../config/auth”);
mongoose.set(“useUnifiedTopology”,true);
set(“useNewUrlParser”,true);
mongoose.connect(Keys.MongoURI);
常数乘积=[
新产品({
图像路径:
“测试”,
标题:“测试1”,
描述:“test1”,
价格:20
}),
新产品({
图像路径:
“测试2”,
标题:“测试2”,
描述:“test2”,
价格:20
})
];
让done=0;
for(设i=0;i
所以,如果我在这里添加一个新产品,它应该检查数据库,如果喜欢:数据库上的标题匹配,那么不要添加到数据库中,只有那些标题是可用的
谢谢 通过在收藏中创建唯一索引,可以防止多个产品具有相同的标题
yourProductSchema.index({“title”:1},{unique:true});
插入带有现有标题的文档时,这将生成一个错误
更多信息:
另一种方法是,如果您希望其他字段也被更新。您可以使用upsert。此处的详细信息:要创建唯一索引,请使用db.collection.createIndex()方法,并将唯一选项设置为true
例如,要在products集合的title字段上创建唯一索引,请在mongo shell中使用以下操作:
db.products.createIndex( { "title": 1 }, { unique: true } )