当我通过createIndex
或ensureIndex
方法创建索引时,我的node.js应用程序崩溃,但未提供任何已发生错误的详细信息。
此外,我注意到我的所有代码都与我的localhost mongodb一起使用,直到我使用远程mongdb atlas副本集。
Node.js:8.5.0 Mongodb:3.6.4 Node.js的Mongodb驱动程序:3.0.8
示例代码(但我尝试了不同的实现变体,没有任何帮助):
db.collection('stars').ensureIndex({name: 1}, { unique: true });
我已经在监听uncaughtException
和unhandledRejection
事件了,但是他们不会发生这次事故。
如何获取详细信息或摆脱此错误?
感谢您的帮助!
答案 0 :(得分:5)
我将mongodb驱动程序更新为版本3.1.0,并最终收到错误消息,其中描述了导致问题的原因。根据错误消息:“ 字段“ retryWrites”对于索引规范无效”。因此,我认为问题出在此字段中,我曾经将其添加到连接uri字符串中。删除该字段后,我摆脱了这个问题。
答案 1 :(得分:3)
该问题可能与以下问题有关:NODE-1641。我遇到了类似的问题,并找到了一些解决方案:
db.collection('stars').ensureIndex({name: 1}, { unique: true, retryWrites: null })
; 但是,您需要检查它是否不会关闭该集合的可重试写入。
答案 2 :(得分:0)
不确定这是否有帮助,但是我目前正在尝试解决此问题。
如果删除{unique:true},则应该可以完成工作,但是如果您再次添加相同的文档,则会生成重复的文档。