首页 > 解决方案 > 如何使用 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 完全错误吗?

标签: node.jsmongodbmongooseforeign-keys

解决方案


我的朋友在https://t.me/MongodbHelp帮助我修复了它

看起来索引被搞砸了。我在集合中运行了这个:

db.collection.getIndexes()
db.collection.dropIndexes()

它修复了错误。

谢谢!


推荐阅读