node.js - 在猫鼬中设置唯一键
问题描述
我目前正在使用以下代码。我基本上使用猫鼬文档中的示例,但我试图让名称字段是唯一的
在这里,我故意创造了两只独特的“小猫”并试图拯救它们
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 键。
解决方案
此属性 unique 不是为了唯一保存数据。它用于将应用于字段的唯一索引。
您可以在此处查看文档。
https://joshtronic.com/2018/06/07/unique-indexes-with-mongodb-and-mongoose/
推荐阅读
- facebook - 我可以使用 graph-api 获取任何页面的 page-fans-country 吗?
- android - 加载音频文件时显示进度条
- json - 社交博客应用程序中喜欢/收藏的数据结构
- c++11 - 如果我想转移一个资源,我应该选择哪种参数类型?弱点?或 shared_ptr
- php - 用于在一系列文件中进行 grep 的 Shell 脚本
- angularjs - Angularjs 材料的 md 复选框无法正常工作
- apache-spark - 如何从 REST API 创建 Spark 长时间运行的上下文?
- c# - 当从 color='blue' 的表中选择 id 时如何在 asp.net(c#) 上显示表
- python - 对产品类执行 CRUD 操作?
- html - “object-fit:cover”不起作用