gpt4 book ai didi

ibm-mobilefirst - searchFields 中 'number' 和 'integer' 之间的 JSONStore 区别

转载 作者:行者123 更新时间:2023-12-02 05:11:13 26 4
gpt4 key购买 nike

我有一个关于 JSONStore searchFields 的问题。

如果我使用 number 作为 searchFields 键并尝试通过 WL.JSONStore.find 方法以 0 作为查询来查找数据,它将命中所有数据(未过滤)。

对于上述情况的 integer 工作正常。

numberinteger 有什么区别?

最佳答案

JSONStore 使用 SQLite 来持久化数据,您可以阅读 SQLite 数据类型 here .简短的回答是 number 将数据存储为 REALinteger 将数据存储为 INTEGER

如果您使用一个名为 num 且类型为 number 的搜索字段创建一个名为 nums 的集合

var nums = WL.JSONStore.initCollection('nums', {num: 'number'}, {});

并添加一些数据:

var len = 5;
while (len--) {
nums.add({num: len});
}

然后使用查询调用find:{num: 0}

nums.find({num: 0}, {onSuccess: function (res) {
console.log(JSON.stringify(res));
}})

你应该回来:

[{"_id":1,"json":{"num":4}},{"_id":2,"json":{"num":3}},{"_id":3,"json":{"num":2}},{"_id":4,"json":{"num":1}},{"_id":5,"json":{"num":0}}]

请注意,您取回了所有存储的文档(num = 4, 3, 2, 1, 0)。

如果您查看 .sqlite 文件:

$ cd ~/Library/Application Support/iPhone Simulator/6.1/Applications/[id]/Documents
$ sqlite3 jsonstore.sqlite

(android文件应该在/data/data/com.[app-name]/databases/下)

sqlite> .schema
CREATE TABLE nums ( _id INTEGER primary key autoincrement, 'num' REAL, json BLOB, _dirty REAL default 0, _deleted INTEGER default 0, _operation TEXT);

注意 num 的数据类型是 REAL

运行与查找函数中使用的查询相同的查询:

sqlite> SELECT * FROM nums WHERE num LIKE '%0%';
1|4.0|{"num":4}|1363326259.80431|0|add
2|3.0|{"num":3}|1363326259.80748|0|add
3|2.0|{"num":2}|1363326259.81|0|add
4|1.0|{"num":1}|1363326259.81289|0|add
5|0.0|{"num":0}|1363326259.81519|0|add

注意 4 存储为 4.0 并且 JSONStore 的查询总是使用 LIKE,任何带有 0 的数字都会匹配查询。

如果您改用 integer:

var nums = WL.JSONStore.initCollection('nums', {num: 'integer'}, {});

查找返回:

[{"_id":5,"json":{"num":0}}]

schema 显示 num 具有 INTEGER 数据类型:

sqlite> .schema
CREATE TABLE nums ( _id INTEGER primary key autoincrement, 'num' INTEGER, json BLOB, _dirty REAL default 0, _deleted INTEGER default 0, _operation TEXT);

sqlite> SELECT * FROM nums WHERE num LIKE '%0%';
5|0|{"num":0}|1363326923.44466|0|add

为简洁起见,我跳过了一些 onSuccess 和所有 onFailure 回调。

关于ibm-mobilefirst - searchFields 中 'number' 和 'integer' 之间的 JSONStore 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com