bug: Select * returns {"changes":{"changes":0}}

オープン
#610 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
28/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
ios, javascript, sqlite

調査の方向性

提供されている iOS の再現手順を実行することから始め、CREATE、INSERT、SELECT に対する db.execute 呼び出しを追跡します。SELECT クエリのレスポンスを期待される product 行と比較します。完了の条件は、文書化された実行パスが changes オブジェクトだけでなく、選択されたデータを返すことです。

索引モデルが issue の本文から書いたものです。

説明

bug/fix needs: triage

Plugin version:

@capacitor-community/sqlite: ^6.0.2

Platform(s):

iOS

Current behavior:

Using Vue2 with capacitor and @capacitor-community/sqlite I can create a sqlite db, connect to it and insert data to it, receiving a
{"changes":{"changes":1}} log that my row inserted, by following examples and documentation - thank you.

When I try to select * to retrieve the row it returns {"changes":{"changes":0}} though. Can you please explain what I'm doing wrong? I've even resorted to putting the select statement into a 9000ms timeout which runs after the insert statement finishes (using await)....

Expected behavior:

Steps to reproduce:

const platform = Capacitor.getPlatform();
const sqlite = new SQLiteConnection(CapacitorSQLite);
const ret = await sqlite.checkConnectionsConsistency();
const isConn = (await sqlite.isConnection("st")).result;
let db;
if (ret.result && isConn) {
db = await sqlite.retrieveConnection("st");
} else {
db = await sqlite.createConnection(
"st",
false,
"no-encryption",
1
);
}
await db.open();
const queries = CREATE TABLE IF NOT EXISTS products ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, price TEXT ); ;
const res = await db.execute(queries);
if (res.changes && res.changes.changes && res.changes.changes < 0) {
throw new Error(Error: execute failed);
} else {
console.log('Executed Create if not Exist queries');
}
const queries2 = INSERT INTO products (name, price) VALUES ('TestRocket', '$1.23'); ;
await db.execute(queries2).then(async function(res2){
if (res2.changes && res2.changes.changes && res2.changes.changes < 0) {
throw new Error(Error: execute failed);
} else {
var str3 = JSON.stringify(res2);
console.log('Executed Insert query: ' + str3);
console.dir(res2);
}

var that = this;
this.timeout = setTimeout(async function(){
const queries4 = SELECT * FROM products; ;

  const res4 = await db.execute(queries4);
  if (res4.changes && res4.changes.changes && res4.changes.changes < 0) {
    throw new Error(`Error: execute failed`);
  } else {
    var str4 = JSON.stringify(res4);
    console.log('Executed Select query: ' + str4);
    console.dir(res4);
  }

}, 9000)

});

Related code:

insert short code snippets here

Other information:

Capacitor doctor:

💊 Capacitor Doctor 💊

Latest Dependencies:

@capacitor/cli: 6.2.0
@capacitor/core: 6.2.0
@capacitor/android: 6.2.0
@capacitor/ios: 6.2.0

Installed Dependencies:

@capacitor/cli: 6.2.0
@capacitor/core: 6.2.0
@capacitor/android: 6.2.0
@capacitor/ios: 6.2.0

[success] iOS looking great! 👌
[success] Android looking great! 👌

insert the output from `npx cap doctor` here
主要言語
Swift
スター
663
フォーク
159
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

capacitor-community/sqlite のほかの issue

capacitor-community/sqlite の issue をすべて見る

似ている issue

Swift の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。