TypeError:无法读取未定义的属性“drop”

Posted

技术标签:

【中文标题】TypeError:无法读取未定义的属性“drop”【英文标题】:TypeError: Cannot read property 'drop' of undefined 【发布时间】:2019-03-16 12:05:39 【问题描述】:

我正在做摩卡咖啡测试。我必须在 before 函数中连接到 MongoDB,并且我需要在 after 函数中删除集合中的文档。

before("authenticate user", async () => 
        mongoose.connect('mongodb://localhost:27017/mo-identity')
        db = mongoose.connection;
        db.once('open', function() 
            console.log('We are connected to test `enter code here`database!')
        )
        .on('error', ()=>console.error.bind(console, 'connection error'))
        )

    after(()=>
        db.User.drop()
    )

以上是我的代码。 user 是一个集合。执行此代码时,我收到此错误TypeError: Cannot read property 'drop' of undefined。帮我解决这个错误

【问题讨论】:

【参考方案1】:

恐怕你不能这样放弃收藏:

db.User.drop()

如果你想删除收藏,那么你应该这样做: mongoose.connection.db.dropCollection('User', function(err, result) ...);

【讨论】:

感谢您的帮助。一些教程中的 db.User.drop() 然后它显示错误。以及如何删除集合中的文档。如果我得到这个答案可能会有所帮助【参考方案2】:

正如@drinchev 所说,您可以通过以下方式删除所有文档:

Model.remove(, function(err)  
    console.log('collection removed') 
);

在你的情况下:

after(()=>
    db.User.remove(, (err) => 
      if (err) throw err;
    );
)

希望对你有帮助。

【讨论】:

以上是关于TypeError:无法读取未定义的属性“drop”的主要内容,如果未能解决你的问题,请参考以下文章

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?

TypeError:无法读取未定义的属性(读取“名称”)

TypeError:无法读取未定义的属性“findAll”(expressjs)

TypeError:无法读取未定义的属性(读取“问题”)

TypeError:无法读取未定义的属性“babel”

TypeError:无法读取未定义的属性(读取“匹配”):