Nedb多个集合单个数据存储区

时间:2014-05-31 04:51:50

标签: javascript node.js mongodb nedb

我是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),但我错了。

因此,是否可以在单个数据存储区中拥有多个集合,或者我是否为每个集合都拥有数据存储区?如果有可能,有谁知道如何实现这一目标? 谢谢......

2 个答案:

答案 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); });