如何使用mongodb ref外键?猫鼬和NodeJS

时间:2019-03-08 11:28:02

标签: node.js mongodb mongoose foreign-keys

我是一个新的mongodb,但目前正在学习JAMStack。我来自python / sql背景。

因此,对于一个学习这些新语言的有趣项目来说,我正在建立一个图书数据库。

截至目前,我有3个收藏集。 首先是用户-包含objID,用户名和散列的pw。 第二个集合是书店,其中包含添加到数据库中的书。 第三个集合称为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%罚款。我可以将登录的图书添加到我的用户帐户中,但是当我创建一个新的用户帐户并想添加userBooks中已经存在的图书时出现问题。

这是错误:

  

E11000重复键错误集合:bookstore.libraries索引:   bookid_1 dup键。

它的行为就像有一个独特的“ true”约束,但老实说我不确定。

有什么想法吗?

我的MongoDB方法和架构是否完全错误?

1 个答案:

答案 0 :(得分:0)

我的同伴帮助我修复了https://t.me/MongodbHelp

似乎索引被弄乱了。 我在集合中运行了这个

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

它纠正了错误。

谢谢!