#javascript #node.js #sqlite
#javascript #node.js #sqlite
Вопрос:
Я работаю с node и пакетами npm sqlite3 и sqlite.
Я пытаюсь запустить подготовленную инструкцию update, которая терпит неудачу. У меня есть:
async function update_json_obj_into_table_by_PropertyId(db,tablename, obj, PropertyId) {
const x = await db.run("UPDATE 'myData' SET StateCode = ? WHERE PropertyId = ? " ,obj.StateCode,PropertyId);
console.log(x)
}
Я называю это с помощью:
const sqlite3 = require('sqlite3').verbose();
const sqlite = require('sqlite')
async function openDb() {
const db = await sqlite.open({filename: './test.db',driver: sqlite3.Database})
db.on("trace", (data) => { console.log(data); });
console.log('connected!')
return db;
}
за которым следует:
if (StateCodeTable amp;amp; StateCodeTable[0].type) {
let json = { StateCode:StateCodeTable[0].type}
const x =await update_json_obj_into_table_by_PropertyId(db,'myData', json, myR);
console.log('inserted');
} else {
console.log('No insert');
}
и я вижу в консоли:
{ stmt: Statement { stmt: undefined }, lastID: 0, changes: 1 }
inserted
Когда я возвращаюсь и проверяю таблицу вручную, я обнаруживаю, что обновления не были сделаны. Как я могу это исправить?
Редактировать,
Я добавил:
db.on("trace", (data) => { console.log(data); });
Теперь в консоли:
ОБНОВИТЬ ‘myData’ УСТАНОВИТЬ StateCode = ‘C1’, ГДЕ вставлен PropertyID = ‘R50155’ { stmt: Оператор { stmt: неопределенный }, lastID: 0, изменения: 1 }
Мне это кажется правильным, но и
SELECT * FROM 'myData' WHERE StateCode != 'NULL';
На самом деле дает ожидаемый ответ, когда я тестирую его вручную — все еще не уверен, почему он говорит undefined ..
Комментарии:
1. Попробуйте включить подробный режим и отслеживать ошибки SQL. Запустите их где-нибудь после создания
db
:sqlite3.verbose(); db.on("trace", (data) => { console.log(data); });
2. пожалуйста, смотрите Редактирование