在 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 [];
  }
}