我是nedb的新手。它有点sqlite用于sql社区,但用于node.js社区。 [https://github.com/louischatriot/nedb]
我想问一下,可以在一个数据库文件(数据存储区)中拥有多个集合。 如果有,请告诉我一些关于如何去做的代码示例? 我试过这个:
var Datastore = require('nedb'),
databaseURL="tudls.db",
db = new Datastore({filename: databaseURL, autoload: true});
这会创建一个名为db的数据存储区。 从文档中,我看到nedb就像mongo一样。所以要插入一条记录,我试过这个:
app.post('/todos', function(req, res){
var task = req.body.text;
db.todols.insert({text: task, done: false}, function(err, saved){
if(err||!saved){
res.send("Task not saved...");
}
res.send("Task saved...");});
});
但是,我得到一个'无法调用未定义的方法插入'。我认为,如果我在插入记录时调用集合名称(todols),它将起作用,以便我可以继续向数据存储区添加另一个集合(db.user),但我错了。
因此,是否可以在单个数据存储区中拥有多个集合,或者我是否为每个集合都拥有数据存储区?如果有可能,有谁知道如何实现这一目标? 谢谢......
答案 0 :(得分:5)
这真的是" lite"对MongoDB的解释,因此实际上并没有相同的"数据库"和"集合"存在于功能齐全的产品中,并省略了许多其他功能。
如果您希望事物看起来像是有各种"集合",那么按照手册页中的建议,您可以在结构中定义各种DataStore
对象,以使事物看起来像这样:
var db = {};
db.todols = new DataStore('/path/to/todols.db');
db.other = new DataStore('/path/to/other.db');
这使你看起来有"集合"实际上对于" neDB"实际上只是DataStore
个对象。
答案 1 :(得分:0)
//创建多个集合
var Datastore = require('nedb');
var db = {};
db.users = new Datastore('path/to/users.db');
db.robots = new Datastore('path/to/robots.db');
//访问它
db.users.loadDatabase();
db.robots.loadDatabase();
//找到一些文件
db.users.find({name: "john"}, function (err,docs){ console.log(docs); });