我正在使用LokiJS,大多数部分都很好。除了我似乎无法从数据库中删除记录。
查找为我提供了要删除的正确记录,但是在保存数据库后,删除()和删除()都没有找到和删除()删除它。我做错了什么?
(注意:我已经尝试在loadDatabase(...)回调之外保存数据库 - 没有变化。 每当我重新运行它时,我认为我删除的记录仍然存在)
代码如下:dbName 是文件的有效路径
var db = new loki(dbName);
db.loadDatabase({}, function (e) {
var orders = db.getCollection("orders");
console.log(orders.count() + " orders found... iterating");
orders.find().forEach((v, i) => {
console.log(i + "." + v.key + " " + v.places.display + " " + v.theme + " " + moment(v.date).format("DD MMM YYYY HH:mm"));
});
}
let dKey = "some key that is valid";
if (!dKey) {
console.log("no key specified, returning");
return;
}
console.log("deleting specific record " + dKey);
let dObj = orders.find({ key: dKey });
if (!dObj || dObj.length == 0) {
console.log("no such record, returning");
return;
}
console.log(dObj[0]);
orders.remove(dObj[0]);
db.saveDatabase((e) => {
console.log("save complete");
});
}
});
尝试:orders.chain().find({ key: dKey }).remove()
我在使用 lokijs 时遇到了同样的问题,所以把它放在这里,以便它可以帮助将来寻找相同问题的其他任何人。
我试图在数据库中查找具有特定$loki
值的记录,但我得到一个空的结果集。然后我试了这个。 data.chain().find({"$loki":{$aeq:serial}}).remove().data()
.在这里,data
是我的数据库实例,serial
是我一直在寻找并传递给find()
的$loki
值。似乎 lokijs 将它们存储为字符串,这就是$aeq
工作的原因,我能够找到并删除所需的记录