我如何在我的node.js应用程序中模拟出数据库,在这种情况下,它mongodb用作博客REST API的后端?
当然,我可以将数据库设置为特定的testing数据库,但我仍然会保存数据而不是仅测试我的代码,还有数据库,所以我实际上没有进行单元测试而是集成测试.
那应该怎么做?创建数据库包装器作为应用程序和数据库之间的中间层,并在测试时替换DAL?
// app.js
var express = require('express');
app = express(),
mongo = require('mongoskin'),
db = mongo.db('localhost:27017/test?auto_reconnect');
app.get('/posts/:slug', function(req, res){
db.collection('posts').findOne({slug: req.params.slug}, function (err, post) {
res.send(JSON.stringify(post), 200);
});
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
// test.js
r = require('requestah')(3000);
describe("Does some testing", function() {
it("Fetches a blogpost by slug", function(done) {
r.get("/posts/aslug", function(res) {
expect(res.statusCode).to.equal(200);
expect(JSON.parse(res.body)["title"]).to.not.equal(null);
return done();
});
});
));
Run Code Online (Sandbox Code Playgroud) 如何从MongoDB中删除数字集合?
PRIMARY> db.123456789011.remove({});
Tue Mar 20 08:42:51 SyntaxError: missing ; before statement (shell):1
PRIMARY> db.123456789011.drop({});
Tue Mar 20 08:43:13 SyntaxError: missing ; before statement (shell):1
Run Code Online (Sandbox Code Playgroud)
是通过PHP脚本创建的..现在我无法弄清楚如何删除它..
思考?
谢谢
有没有一种简单的方法可以清除在 docker 中运行的 mongodb 数据库?
或者可能将其全部删除并重新创建?
有没有一种方法可以使用一个命令删除 MongoDB 数据库中的所有集合,而无需为每个单独的集合命名?
根据我的发现,执行此操作的命令似乎是db.dropDatabase(). 但这给了我一个未经授权的错误:
> use MyDb
switched to db MyDb
> db.dropDatabase();
{
"ok" : 0,
"errmsg" :
"not authorized on MyDb to execute command
{ dropDatabase: 1.0, $db: \"MyDb\" }",
"code" : 13,
"codeName" : "Unauthorized"
}
Run Code Online (Sandbox Code Playgroud)
但是,我可以毫无问题地删除数据库中的每个集合db.collection.drop()。
> use MyDb
switched to db MyDb
> db.collection1.drop();
true
> db.collection2.drop();
true
> db.collection3.drop();
true
Run Code Online (Sandbox Code Playgroud)
那么有没有办法删除 MongoDB 数据库中的所有集合而不是使用db.dropDatabase()?
我的 MongoDB 中有一个数据库列表。如何删除除所有数据库local,admin和config?

mongodb ×6
database ×2
docker ×1
mocking ×1
mongodb-php ×1
node.js ×1
nosql ×1
unit-testing ×1