在 knex SELECT 之后访问数组值
Access array values after knex SELECT
我在 Electron 应用程序中使用以下代码片段来检索 sqlite3 数据库中的给定列:
database.js
var database = require("knex")({
client: "sqlite3",
connection: {
filename: path.join(__dirname, 'db/food.db')
},
useNullAsDefault: true
});
const fetchItems = (colName) => {
let itemList = database.select(colName).from('food')
itemList.then(() => {
// console.log(itemList);
return itemList;
}).catch((err) => {
console.log(err)
return [];
})
}
当我尝试访问数组 itemList
时,我收到一条消息 undefined
。当我尝试将其打印到控制台时,它显示了数据库对象的冗长信息,如下所示:
Builder [object] {
client: Client_SQLite3 {
config: { client: 'sqlite3', connection: [Object], useNullAsDefault: true },
logger: Logger {
_inspectionDepth: 5,
_enableColors: true,
_debug: undefined,
_warn: undefined,
_error: undefined,
_deprecate: undefined
},
connectionSettings: {
filename: '/home/.../db/food.db'
},
connectionConfigExpirationChecker: null,
driver: {
Database: [Function: Database],
Statement: [Function: Statement],
Backup: [Function: Backup],
OPEN_READONLY: 1,
...
如何访问值数组(即列)?谢谢。
更新:这是我在 main.js
.
中调用此 fetchItems
函数的方式
const database = require('./database');
ipcMain.on("showItemsButtonClicked", function () {
let itemList = database.fetchItems('food_name');
itemList.then(() => {
mainWindow.webContents.send("itemsRetrieved", itemList);
})
console.log(itemList);
});
我认为你使用了错误的语法。
const fetchItems = (colName) => {
let itemList = database.select(colName).from('food').then((res) => {
// console.log(res);
return res;
}).catch((err) => {
console.log(err)
return [];
})
return itemList
}
使用异步等待:
const fetchItems = async(colName) => {
try {
let itemList = await database.select(colName).from('food')
return itemList
} catch(err) {
console.log(err)
return [];
}
}
我在 Electron 应用程序中使用以下代码片段来检索 sqlite3 数据库中的给定列:
database.js
var database = require("knex")({
client: "sqlite3",
connection: {
filename: path.join(__dirname, 'db/food.db')
},
useNullAsDefault: true
});
const fetchItems = (colName) => {
let itemList = database.select(colName).from('food')
itemList.then(() => {
// console.log(itemList);
return itemList;
}).catch((err) => {
console.log(err)
return [];
})
}
当我尝试访问数组 itemList
时,我收到一条消息 undefined
。当我尝试将其打印到控制台时,它显示了数据库对象的冗长信息,如下所示:
Builder [object] {
client: Client_SQLite3 {
config: { client: 'sqlite3', connection: [Object], useNullAsDefault: true },
logger: Logger {
_inspectionDepth: 5,
_enableColors: true,
_debug: undefined,
_warn: undefined,
_error: undefined,
_deprecate: undefined
},
connectionSettings: {
filename: '/home/.../db/food.db'
},
connectionConfigExpirationChecker: null,
driver: {
Database: [Function: Database],
Statement: [Function: Statement],
Backup: [Function: Backup],
OPEN_READONLY: 1,
...
如何访问值数组(即列)?谢谢。
更新:这是我在 main.js
.
fetchItems
函数的方式
const database = require('./database');
ipcMain.on("showItemsButtonClicked", function () {
let itemList = database.fetchItems('food_name');
itemList.then(() => {
mainWindow.webContents.send("itemsRetrieved", itemList);
})
console.log(itemList);
});
我认为你使用了错误的语法。
const fetchItems = (colName) => {
let itemList = database.select(colName).from('food').then((res) => {
// console.log(res);
return res;
}).catch((err) => {
console.log(err)
return [];
})
return itemList
}
使用异步等待:
const fetchItems = async(colName) => {
try {
let itemList = await database.select(colName).from('food')
return itemList
} catch(err) {
console.log(err)
return [];
}
}