首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阻止数据库复制项目

如何阻止数据库复制项目
EN

Stack Overflow用户
提问于 2019-11-30 04:17:21
回答 2查看 40关注 0票数 0

我正在学习Nodejs和MongoDB,并且我成功地连接到数据库,并保存到数据库工作,但如果例如我添加另一个项目到列表中,并再次运行脚本保存到数据库中,它将复制已经存在的项目。我想每当我需要添加一个新的项目时,它只添加该特定的项目,而不是再次添加所有内容。

这是我的播种机:

代码语言:javascript
复制
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);

例如,如果我在这里添加了一个新产品,它应该检查数据库,例如:标题匹配数据库,然后不要添加到数据库,只有标题是可用的。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-11-30 04:29:31

您可以通过在集合中创建唯一索引来防止多个产品具有相同的标题。

代码语言:javascript
复制
yourProductSchema.index({ "title": 1 }, { unique: true });

这将在插入具有现有标题的文档时生成err

更多信息:https://docs.mongodb.com/manual/core/index-unique/

另一种方式,如果您希望其他字段也被更新。您可以使用upsert。更多信息请点击此处:https://docs.mongodb.com/manual/reference/method/db.collection.update/

票数 0
EN

Stack Overflow用户

发布于 2019-11-30 04:53:10

要创建唯一索引,请使用db.collection.createIndex()方法,并将唯一选项设置为true。

例如,要在products集合的title字段上创建唯一索引,请在mongo shell中使用以下操作:

代码语言:javascript
复制
db.products.createIndex( { "title": 1 }, { unique: true } )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59110547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档