node.js - 如何使用 mongodb ref 外键?猫鼬和 NodeJS
问题描述
我是一个新的 mongodb,但目前正在学习 JAMStack。我来自 python/sql 背景。
所以为了一个有趣的项目来学习这些新语言,我正在建立一个图书数据库。
截至目前,我有 3 个系列。首先是用户 - 包含 objID、用户名和散列密码。第二个集合是 bookstore,其中包含添加到数据库中的书籍。第三个集合称为 userBooks/library,它基本上是用户拥有的书籍的集合,例如
const userBooks = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
userid: {type: Schema.Types.ObjectId, ref: 'User'},
bookid: {type: Schema.Types.ObjectId, ref: 'Book'},
});
这工作100%很好。我可以添加登录到我的用户帐户的书籍,但是当我创建一个新用户帐户并想要添加用户书籍中已经存在的书籍时出现了问题。
这是错误:
E11000 重复键错误集合:bookstore.libraries 索引:bookid_1 重复键。
它的表现就像它有一个独特的:“真实”约束,但老实说我不确定。
有任何想法吗?
我使用 MongoDB 的方法和 Schema 完全错误吗?
解决方案
我的朋友在https://t.me/MongodbHelp帮助我修复了它
看起来索引被搞砸了。我在集合中运行了这个:
db.collection.getIndexes()
db.collection.dropIndexes()
它修复了错误。
谢谢!
推荐阅读
- python - 将列表 (list[n:k]) 的内容与连续乘数相乘
- flutter - Flutter just_audio 循环模式不循环
- html - 如何使用 flexbox 使水平行中的列相等?
- javascript - this.props.children.map 不是 arrayOf PropTypes 上的函数 - react-responsive-accordion
- python - 使用 tensorflow 和 keras 运行 .py 时出错
- macos - MacOS vm_read API 看起来很不稳定(没有这样的过程)
- spring - 未抛出 spring webflux 的自定义异常
- flutter - 在小部件中使用圆形创建颜色 - Flutter
- javascript - 为什么嵌套在地图函数中时,material-ui 的工具提示不显示?
- sql - 如何修复此错误消息“唯一约束”?