Nedb 多集合单数据存储

Posted

技术标签:

【中文标题】Nedb 多集合单数据存储【英文标题】:Nedb Multiple Collection Single Datastore 【发布时间】:2014-07-20 21:59:38 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

这确实是对 MongoDB 的“精简”解释,因此在全功能产品中确实不存在相同的“数据库”和“集合”概念,并且省略了许多其他功能。

如果您想让事物看起来好像确实有各种“集合”,那么按照手册页中的建议,您可以在结构中定义各种 DataStore 对象以使事物看起来像这样:

var db = ;
db.todols = new DataStore('/path/to/todols.db');
db.other = new DataStore('/path/to/other.db');

这看起来你有“集合”,实际上是“neDB”实际上只是DataStore 对象。

【讨论】:

【参考方案2】:

//创建多个集合

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); ); 

【讨论】:

以上是关于Nedb 多集合单数据存储的主要内容,如果未能解决你的问题,请参考以下文章

在 nedb 中添加的记录是单一的,但为啥 VUE 会多次存储相同的记录?

Electron-Vue中操作本地数据库NeDB

Collection集合

Collection集合

集合框架(01)

集合框架