Sequelize 'no such table:' 尽管 table 并且数据库明显存在且配置正确

Sequelize 'no such table:' despite table and database clearly existing and correctly configured

晚上好。 我正在使用 SQLite 构建一个 Express REST API,Sequelize 是我选择的 ORM。 我正在使用现有的数据库,所以我使用了一个名为 sequelize-auto 的包 生成我的模型。

问题是,Sequelize 出于某种原因看不到我的数据库、.db 文件,或者不会检测到 table,尽管已明确定义。问题出现在这段代码中:

const Sequelize = require('sequelize');
const sequelize = new Sequelize('expenserdb', 'user', 'pass', {
    dialect: 'sqlite',
    host: '../database/expenserdb.db'
});
const initModels = require('../models/init-models');
const models = initModels(sequelize);

module.exports = class dbService {
    editUserName(newName) {
        models.User.update({Name: newName}, {
            where: {
                UserId: 1
            }
        })
        .catch((err) => {console.log(err)});               
    }
}

这是我的 dbService.js 文件,如您所见,数据库定义明确,名称、位置和所有内容都是正确的。尽管如此,我仍然得到:

Error: SQLITE_ERROR: no such table: User {errno: 1, code: 'SQLITE_ERROR', sql: 'UPDATE `User` SET `Name`= WHERE `UserId` = '

此服务正在通过 awilix 注入我的控制器,并在控制器内部调用该方法:

const container = require("../containerConfig");

const dbService = container.resolve("dbService");

exports.runNameChange = async (req) => {
    const newName = JSON.stringify(req.body.name);
    const result = await dbService.editUserName(newName);
    return result;
};

反过来,当这个端点被命中时,控制器方法是运行:

app.post('/updateuser', async function(req, res) {
    const result = await userController.runNameChange(req);
    res.status(200).send(String(result));
});

此外,dboptions.json 文件:

{
    "storage":"./database/expenserdb.db"
}

总的来说,我是 Node、Express 和 Sequelize 的新手。我可能错过了一些重要的东西,但我似乎无法意识到是什么。非常感谢帮助。

更新:刚弄明白,你需要完整路径而不是相对路径 冗长的构造函数,例如:

const sequelize = new Sequelize('expenserdb', 'user', 'pass', {
    dialect: 'sqlite',
    storage: 'E:/desktopshortcuts/yahalom/expenser/expenser-server/database/expenserdb.db'
});