【问题标题】:Sequelize 'no such table:' despite table and database clearly existing and correctly configuredSequelize 'no such table:' 尽管表和数据库明确存在且配置正确
【发布时间】:2022-02-18 03:05:03
【问题描述】:

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

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

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`=$1 WHERE `UserId` = $2'

这个服务正在通过 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 的新手。我可能错过了一些重要的事情,但我似乎无法意识到是什么。非常感谢您的帮助。

【问题讨论】:

    标签: node.js sqlite sequelize.js sequelize-auto


    【解决方案1】:

    更新:刚刚想通了,您需要完整路径而不是相对路径 详细的构造函数,例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-07
      • 2015-04-09
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2014-09-20
      相关资源
      最近更新 更多