- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的应用程序工作流程是从 API 后端获取一些数据,并在 LokiJS 的帮助下写入客户端存储。我在客户端集合中有成千上万的数据。对于我的应用程序的状态管理,我使用 Vuex。
这就是问题所在。当我提交对我的 Vuex 状态的更改时,它也会更改我在 LokiJS 存储中的数据。我怎样才能避免这种情况?
我有 Vuex 操作从 LS(lokijs 存储)获取用户
getStudentByClass({ state, commit }) {
const stds = students.collection.find({ class_id: state.classId });
commit('setStudents', stds);
}
selectStudent(state, index) {
const student = state.students[index];
Vue.set(student, 'selected', !student.selected);
}
和 Vuex 突变
setStudents(state, students) {
state.students = students
}
如上图;使用 selectStudent
函数,我在 Vuex 商店上更改了我的学生选择的属性,但在 LS 上也发生了变化。
原始LS数据是这样的
$loki: 63
class_id: 5
color: "green"
id: 248
meta: Object
name: "John Doe"
point: 100
teacher: 0
updated_at: "2017-01-24 10:00:34"
username: "johdoe"
LS数据改变
$loki: (...)
class_id: (...)
color: (...)
id: (...)
meta: (...)
name: (...)
point: (...)
selected: true <--------------- here
teacher: (...)
updated_at: (...)
username: (...)
__ob__: Observer
get $loki: function reactiveGetter()
set $loki: function reactiveSetter(newVal)
// skipped
最佳答案
嗯,在 JS 中对象是通过引用传递的,所以在 vuex 中改变它们也会在 loki 中改变它们。这没什么不寻常的。
如果你不想这样,你应该使用像 clone-deep
这样的包在将结果传递给 vuex 之前从 loki 克隆结果(lodash 也有这样的功能,以防你使用它)。
关于vue.js - 更新 Vuex 状态也会更改 LokiJS 数据。为什么? Vuex/LokiJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42727331/
我尝试创建一个数据库,并将集合添加到该数据库并将更改保存到 IndexedDB。 下面是我的代码 两个 Controller SaveController 和 LoadController。 myAp
lokijs id ($loki) 是否唯一? 如果我有来自一个集合的 2 个文档,其 ID 为 $loki:1 和 $loki:2,并且我删除了 $loki:1,那么我创建的下一个文档应该是 $lo
我尝试创建一个数据库,并将集合添加到该数据库并将更改保存到 IndexedDB。 下面是我的代码 两个 Controller SaveController 和 LoadController。 myAp
我的应用程序工作流程是从 API 后端获取一些数据,并在 LokiJS 的帮助下写入客户端存储。我在客户端集合中有成千上万的数据。对于我的应用程序的状态管理,我使用 Vuex。 这就是问题所在。当我提
我如何按升序对 loki js 集合进行排序 var categoryCollection = offlineDb.getCollection('Category'); var catColl = c
我怀疑这是一个有点简单的问题,因为我对前端不是很有经验。 我正在尝试将 lokijs 用作浏览器应用程序中的数据存储,但无法运行它。我有在我的 html 中,和 var db = new loki('
我正在尝试在 LokiJS 中使用现有的数据库,但我的 autoloadCallback 没有触发。 正在使用console.log('from add collection don')知道它何时触发
在 LokiJS 中,我尝试了一个非常简单的查询(我假设是 AND): var dbRes = recsCol.find({'format':format, 'cardId':-1}); 插入一些数据
我正在尝试向 LokiJS 添加监听器,以便每当任何集合中的数据发生更改时我都会收到通知(尽管根据文档 LokiJS 支持数据更改通知)。但是我无法收到数据更改的通知。 下面是我正在使用的代码片段:
要在 LokiJS 集合上创建索引(或 UniqueIndex),您只需指定字段名称: db.addCollection('Children',{indices:['name']}) ...将在集合中
[更新]我后来发现了一些例子,如下: this.db = new Loki("viewsaving", { autosave: true,
有没有办法在 loki 中指定复合唯一索引?我尝试过类似的方法: db.addCollection('contents', {unique: ['id', 'wsID']}); 但这似乎产生了 2 个
我正在使用 lokijs 来存储一些我需要使用的数据。我的数据如下所示。作为 lokijs 的新手,我一直在努力寻找一种方法来从 part 中获取 item_part_option_groupsarr
我最近在 Node 上研究 LokiJS,我找不到删除整个集合本身的命令, 我假设这些命令存在,但我尝试使用这些命令,但我找不到任何文档/样本来删除集合。 //let result = this.db
我目前正在使用 Onsen UI+Cordova 开发一个应用程序,并尝试使用 LokiJS 作为我的无服务器数据库。根据 LokiJS 的文档: If nothing is specified, L
我正在从数据库中查询一些简单的内容,但它一直返回一个空数组。我按照网站上的文档尝试了几种方法。 user.chain().find({ email: 'test@gmail.com' }).data(
最近我遇到了 lokijs,我计划将它用于我使用 Ionic 开发的混合移动应用程序。据我了解,它是一个内存数据库,执行速度非常快。所以,我的问题是,它是否适用于大数据库(大约 10-50MB 甚至更
我正在寻找一个可以存储数据的 indexedDB 包装库。 (具体用途是针对 JavaScript Cordova 应用程序,但也可以在浏览器中运行) 我找到了 LokiJS这似乎可行。然而,Loki
我一直在尝试使用 lokijs在一个项目上。 Lokijs 会生成自己的 ID 吗?还是我们需要自己处理? 最佳答案 LokiJS 生成自己的 ID。由于属性“id”是一个通用名称,为避免冲突,插入集
嗨,我正在使用 cordova/angularjs/lokijs 以 json 格式在数据库中插入记录时,它显示类型错误(“文档需要是一个对象”),但在简单数组的情况下,它工作正常。我需要存储为 JS
我是一名优秀的程序员,十分优秀!