相关疑难解决方法(0)

如何使用Mongoose删除数据库?

我正在Node.js和Mongoose中准备一个数据库创建脚本.如何检查数据库是否已存在,如果是,请使用Mongoose删除(删除)它?

我找不到用Mongoose放弃它的方法.

mongoose mongodb node.js

95
推荐指数
8
解决办法
9万
查看次数

MongoError:尝试删除集合时找不到ns

当我尝试删除集合时,Mongoose会抛出一个错误,即" MongoError:ns not found ".

这是我的猫鼬代码:

var mongoose = require('bluebird').promisifyAll(require('mongoose'));
......
......
......   
mongoose.connection.db.dropCollection("myCollection",function(err,affect){
   console.log('err',err);

})
Run Code Online (Sandbox Code Playgroud)

错误:

错误{[MongoError:ns not found]
name:'MongoError',
message:'ns not found',
ok:0,
errmsg:'ns not found'}

mongoose mongodb node.js

44
推荐指数
3
解决办法
2万
查看次数

mongoose.connection.collections.collection.drop()每隔两次就会引发错误

我正在使用Jest为Node / Express / Mongo项目设置测试。我试图编写一个函数来清除集合,所以每个测试都以一个干净的状态开始:

const clearCollection = (collectionName, done) => {
  const collection = mongoose.connection.collections[collectionName]
  collection.drop(err => {
    if (err) throw new Error(err)
    else done()
  )
}

beforeEach(done => {
  clearCollection('users', done)
})
Run Code Online (Sandbox Code Playgroud)

再一次尝试,并保证:

const clearCollection = collectionName => {
  const collection = mongoose.connection.collections[collectionName]
  return collection.drop()
}

beforeEach(async () => {
  await clearCollection('users')
})
Run Code Online (Sandbox Code Playgroud)

问题在于它们在工作和引发错误之间都交替出现。每次保存文件时,它要么完美运行,要么抛出错误,每次都交替出现。错误始终是以下之一:

MongoError: cannot perform operation: a background operation is currently running for collection auth_test.users

MongoError: ns not found
Run Code Online (Sandbox Code Playgroud)

通过clearCollection()在a内调用自身catch(),我可以使其在100%的时间内工作(无论如何受堆栈限制),但这感觉很不对劲:

const clearCollection …
Run Code Online (Sandbox Code Playgroud)

mongoose mongodb node.js promise async-await

5
推荐指数
1
解决办法
1977
查看次数

标签 统计

mongodb ×3

mongoose ×3

node.js ×3

async-await ×1

promise ×1