pouchdb - PouchDB - Map reduce 查询不适用于 websql 适配器
问题描述
问题
Map reduce 查询不适用于 websql 适配器
信息
- 环境:Node.js
- 平台:Mac/Windows 10
- 适配器:WebSQL、HTTP
- 服务器:CouchDB
复制
const PouchDB = require("pouchdb-core");
PouchDB
.plugin(require("pouchdb-adapter-node-websql"))
.plugin(require("pouchdb-adapter-http"))
.plugin(require("pouchdb.mapreduce.noeval"))
.plugin(require("pouchdb-replication"));
var websqlDB = new PouchDB("db_test.sql", { adapter: "websql" });
var serverDB = new PouchDB("http://localhost:5984/db_test");
async function test(db) {
const itemView = {
_id: "_design/item", views: {
item: {
map: function (doc) {
try {
emit(doc);
} catch (err) { }
}.toString()
}
}
};
try { await db.put(itemView); } catch (e) { console.log(e); }
await db.post({name: "name"});
const docs = await db.query("item");
return docs;
}
async function run() {
console.log("query websql db");
console.log(await test(websqlDB));
console.log("query couch db");
console.log(await test(serverDB));
}
run().then().catch(err => console.log(err));
输出
query websql db
{ total_rows: 0, offset: 0, rows: [] }
query couch db
{ total_rows: 1,
offset: 0,
rows:
[ { id: 'fa2e86f972cb38d80530b734bc00bf4d',
key: [Object],
value: null } ] }
似乎该查询不适用于 websql 适配器。当我查询它时,它什么也不返回。我们在 Mac 和 Windows 平台上都注意到了这个问题。这是我使用的版本:
{
"pouchdb-adapter-cordova-sqlite": "^2.0.5",
"pouchdb-adapter-http": "^6.4.3",
"pouchdb-adapter-node-websql": "^7.0.0",
"pouchdb-core": "^6.4.3",
"pouchdb-find": "^6.4.3",
"pouchdb-replication": "^6.4.3",
"pouchdb-upsert": "^2.2.0",
"pouchdb.mapreduce.noeval": "^0.2.0"
}
不确定是我的代码问题还是 websql 实际上无法使用 map reduce 查询。
解决方案
我在 github 上找不到 pouchdb-adapter-node-websql,但如果它与 pouchdb-adapter-websql-core 类似,则不再支持。
结果,我发现索引会在更新后第一次消耗索引时中断。特别是 allDocs 方法的 'keys' 选项对我不起作用,这导致 pouchdb-abstract-mapreduce 模块的 getKeyValueDocs 方法无法正常工作,返回所有文档。当在此方法之后更新索引时,它会导致所有文档,除了更新的文档被从索引中删除。结果 - 在任何不包括您上次更新的文档的查询中,您将一无所获。
我确实找到了这个存储库,它为 react-native 修复了 pouchdb-adapter-websql-core。它也可能适用于科尔多瓦。
推荐阅读
- sql - 如何使用 SQL 查找祖父母?
- excel - 如何在 Microsoft Access 表单上使用网络摄像头捕获?
- swift - 如何在 Swift 中连接两个 unicode
- java - 无法加载 JVMCI 共享库:libcrypt.so.1:无法打开共享对象文件:没有这样的文件或目录
- elasticsearch - 相对于昨天的 ElasticSearch 日期数学
- c# - LinqToSQL 左外连接
- sql - 清洁日期栏
- machine-learning - caffe net 从 hdf5 层获取下一批
- javascript - 为什么我的代码不起作用,向 SQL 数据库添加记录
- r - 唯一.default(x)中的R Plotly错误:唯一()仅适用于向量