当我使用此查询启动代码时,有时我可以看到列出的所有表,有时只有一个,我总是得到这个错误:
查询错误:错误:SQLITE_MISUSE:未知错误
我已经读过,当SQLITE API使用不当时会发生SQLITE_MISUSE.你能帮助我吗,因为我在这段代码中找不到什么错误.
编辑.我已经对代码进行了更改以摆脱竞争问题.
仍然会出现带有SQLITE_MISUSE wrror的消息,但消失的表问题已经消失.在我的查询中竞争是这样的.
这是代码.
var sqlite3 = require("node-sqlite3");
var fs = require('fs');
var query_count;
var init = function (response) {
var db = new sqlite3.Database("test.db", function() {
fs.readFile('./assets/sql/initDB.sql', function(err,data){
if(err) {
console.error("Could not open file: %s", err);
return;
}
var query = data.toString('utf8');
queries = query.split(";");
db.serialize(function() {
query_count = queries.length;
for(var i=0; i<queries.length; i++) {
queries[i] = queries[i].replace("\r\n","");
db.run(queries[i], function(error) {
if(error) {
console.log("Query Error: "+error);
}
query_count--;
if( query_count <= 0 ) {
db.close(); …Run Code Online (Sandbox Code Playgroud) 我对Observable.zip函数有点"estetic"问题.你这样使用它:
Observerbale.zip(
reqA, reqB, reqC,
(a, b, c) -> {/*deal with them*/});
Run Code Online (Sandbox Code Playgroud)
请求数量等于"处理它"功能中的参数数量.现在,如果你有更多的请求,比如6,你将最终得到函数,它需要6个参数(假设它们都有不同的类型).它只是感觉不干净.有没有办法将它们包装在一个类中,例如属性?
我现在的真实问题是,我使用zip来加载设置数据:
Observable.zip(
loadAPIMenus(), //1.
databaseService.readFavorites(), //2.
(menuResponse, favorites) -> loadFavorites(menuResponse, favorites)) //3.
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
menus -> menuSubscriber.onNext(menus), //4.
error -> menuSubscriber.onError(error));
Run Code Online (Sandbox Code Playgroud)
- 从rest api加载列表视图的项目
- 加载这些项目的ID,这些项目在db中存储为收藏夹
- 合并两个列表,因此最喜欢的项目是isFavorite>设置为true
- 更新列表视图
现在不是那么糟糕.但我想在#3处增加2-3个对其他数据结束函数的请求将增长到具有太多函数参数的4行猛犸象.
我想,我可以使用Observable.zip嵌套在另一个中,但可能很危险.有没有更优雅的方式来包裹这些参数?
我很高兴看到你的建议.