我正在对nodeJS应用程序进行一些e2e测试。在前/后挂钩我需要添加/删除一些mongoDB文件,这就是我这样做的方法:
根本不可能只连接一次mongo服务器吗?
我想做什么:
{ _id: articleId }
(现在在代码中缺失)collection.insertOne(articles.main)
)我的代码对我不太好
describe('article module', function () {
before(function () {
MongoClient.connect(mongoServer, (err, db) => {
expect(err).to.be.null
db.collection('content', (err, collection) => {
expect(err).to.be.null
collection.findOne({ _id: articleId }, (err, item) => {
expect(err).to.be.null
if (!item) collection.insertOne(articles.main)
db.close()
})
})
})
})
after(function () {
MongoClient.connect(mongoServer, (err, db) => {
expect(err).to.be.null
db.collection('content', (err, collection) => {
expect(err).to.be.null
collection.remove({ _id: articleId }, (err, removed) => {
expect(err).to.be.null
db.close()
})
})
})
})
})
答案 0 :(得分:1)
describe('article module', () => {
before(() => {
MongoClient.connect(mongoServer, (err, db) => {
expect(err).to.be.null
const content = db.collection('content');
content.findOne({ _id: articleId })
.then(item => {
return content.insertOne(articles.main);
})
.then(insertResult => {
db.close();
})
.catch(err => {
expect(err).to.be.null;
})
})
})
after(() => {
MongoClient.connect(mongoServer, (err, db) => {
expect(err).to.be.null
const content = db.collection('content');
content.remove({ _id: articleId })
.then(removed => {
db.close();
})
.catch(err => {
expect(err).to.be.null;
})
})
})
})
您也可以使用第三方承诺来调用数据库