我想拥有像关系或目标数据库这样的自动增量字段,所以我需要一个_id
具有自动设置字段值的整数字段,值应该是最后一个记录_id
值,如下所示:
数据:
{_id:1,name"foo"}
{_id:2,name"bar"}
删除最后一条记录:
{_id:1,name"foo"}
添加新记录:
{_id:1,name"foo"}
{_id:3,name"newbar"}
我在我的数据存储中添加了一个函数并计算 _id 和加 1 的最大值max(_id)+1
并设置为字段值,但这里有问题:
当我们在关系数据库中使用自动增量字段时,它就像我说的那样工作,并且在您remove last record
保留删除的记录号并且新插入的记录继续增加但以我的方式表示新记录的删除记录的 _id 之后。
我的代码是:
var Datastore = require('nedb'),
localDb = new Datastore({
filename: __dirname + '/dbFilePath.db',
autoload: true
});
localDb.getMax = function(fieldName, onFind){
db.find({}).sort({_id:-1}).limit(1).exec(function (err, docs) {onFind && onFind(err, docs['_id']);});
return localDb;
}
localDb.insertAutoId = function(data, onAdd){
var newIndex = 0;
localDb.getMax(function (err, maxValue) {
newIndex = maxValue+1;
if(!data["_id"])
data["_id"] = newIndex;
localDb.insert(data, function (err, newDoc) {
onAdd && onAdd(err, newDoc);
});
});
return localDb;
}