javascript - 尝试更新 LokiJS db 但出现 'Trying to update unsynced document' 错误

标签 javascript lokijs

尝试在 Loki JS 中动态添加他们拥有的人和水果的条目,但我不断收到 Trying to update unsynced document. Please save the document first by using insert() or addMany()错误。有人对如何成功做到这一点有任何想法吗?

我已经记录了传入的值,它们与数据库中已经找到的值相匹配。

const loki = require('lokijs');

const db = new loki('loki.json');

const peopleAndFruits = db.addCollection('peopleAndFruits');

peopleAndFruits.insert({ dbname: 'person', fruits: 10 });

const createOrInsertUserToDb = (name, fruitNumber) => {
    const data = peopleAndFruits.find({ dbname: name });
    console.log('db entry before updated ', data[0].dbname);
    if (data[0].dbname !== name) {
        // console.log('this person did not exist in our database');
        peopleAndFruits.insert({ dbname: name, fruits: fruitNumber });
    } else {
        // console.log('previously existing entry');
        peopleAndFruits.update({
            dbname: data[0].dbname,
            fruits: Number(fruitNumber + data.fruits),
        });
    }
    // console.log('data after update or insert', peopleAndFruits.data);
    db.saveDatabase();
};

最佳答案

我偶然发现了这个问题,问题是当调用 peopleAndFruits.update 时,您传递的文档需要是集合中的现有项目,这意味着它必须有一个 $loki id。就你而言,你可以选择

peopleAndFruits.update({
  ...data[0],
  fruits: +fruitNumber + fruits;
});

peopleAndFruits.findAndUpdate({$loki: data[0].$loki}, item => {
  item.fruits = +fruitNumber + fruits;
});

关于javascript - 尝试更新 LokiJS db 但出现 'Trying to update unsynced document' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786218/

相关文章:

lokijs - 如何从持久性中重新加载 Loki 数据库和集合

javascript - 表排序器不工作

javascript - 将 <span> 绝对定位在 &lt;textarea&gt; 的底部

JavaScript。对象的一个​​成员是否可以在不显式引用对象本身的情况下访问该对象的另一个成员?

javascript - 无法使用 lokiJS 将数据库保存为 json 文件

javascript - 浏览器应用程序无法访问 loki.js

javascript - 在处理 js 时无法从 PImage 获取像素 []

javascript - 使用 React-router-dom 进行导航

vue.js - 更新 Vuex 状态也会更改 LokiJS 数据。为什么? Vuex/LokiJS

lokijs - 有没有办法在 loki 中创建复合唯一索引?