首页 > 解决方案 > 在猫鼬中设置唯一键

问题描述

我目前正在使用以下代码。我基本上使用猫鼬文档中的示例,但我试图让名称字段是唯一的

在这里,我故意创造了两只独特的“小猫”并试图拯救它们

const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/test", {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useCreateIndex: true
});

const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", function () {
  console.log("Connected to database");
});

const kittySchema = new mongoose.Schema({
  name: { type: String, unique: true },
});

kittySchema.methods.speak = function () {
  const greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name";
  console.log(greeting);
};

const Kitten = mongoose.model("Kitten", kittySchema);

const fluffy = new Kitten({ name: "fluffy" });
fluffy.save();

const fluffy2 = new Kitten({ name: "fluffy" });
fluffy2.save();

使用 unique 属性似乎不起作用,因为我不断在数据库中获得重复的条目。我还尝试在我认为已弃用的架构中使用 removedups 键。

标签: node.jsmongodbmongoose

解决方案


此属性 unique 不是为了唯一保存数据。它用于将应用于字段的唯一索引。

您可以在此处查看文档。

https://joshtronic.com/2018/06/07/unique-indexes-with-mongodb-and-mongoose/


推荐阅读