我想有一个像关系或目标数据库的准确自动递增字段,所以我需要自动设置字段值的整数_id
场,值应该是一个更加最后一个记录_id
值是这样的:如何在nedb中使用自动增量字段?
数据:
{_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;
}