我在sequelize上遇到了一个非常奇怪的问题,当我try 调用函数findAll时,它工作得很好(create和destroy也是如此),但当我try 调用函数"findById"时,它抛出"findById不是函数"(FindOne也是如此).

//works fine
var gammes = models.gamme.findAll().then(function(gammes) {
        res.render('admin/gammes/gestion_gamme',{
            layout: 'admin/layouts/structure' ,
            gammes : gammes,
            js: "gammes"
        });
    });

// throws models.gamme.findById is not a function
models.gamme.findById(req.params.id).then(function(gamme) {
        gamme.update({
            nom: req.body.nom
        }).then(function () {
            res.redirect("/gammes");
        })
    });

加姆.js模型

module.exports = function (sequelize, DataTypes) {
    "use strict";
    var gamme = sequelize.define('gamme', {
        id_gamme: {
            type: DataTypes.INTEGER.UNSIGNED,
            autoIncrement: true,
            primaryKey: true
        },
        nom: {
            type: DataTypes.STRING,
            allowNull: false
        }
    }, {
        classMethods: {},
        timestamps: false
    });
    return gamme;
};

推荐答案

在Sequelize v5中,findById()被findByPk()取代.使用findByPk替换findById,一切都会正常工作.你可以找到查询文档here

Node.js相关问答推荐

使用Vite和ReactJS时,在哪里设置NODE_OPTIONS?

查询嵌套数组中的最后一个元素具有特定值的mongoDB集合中的文档

如何在MongoDB中更新嵌套数组

使用Node.js中的";类型";:";模块";不导入文件

JsonwebToken过期后如何注销和清除cookie?

仅在一次查询中 MongoDB 上最近的一对位置

合并Shift对象数组以创建最终的排班表

我需要聚合两个 MongoDB 集合

为什么 FastAPI 需要 Web 服务器(即 Nginx)而不是 Express API?

加速 sequelize ORM 中的查询

无服务器部署使用无服务器组合抛出`spawn serverless ENOENT`

如何让 vscode 假设一个 node.js 上下文,以便它不假设 `fetch` 存在?

Node.js mongodb 驱动程序异步/等待查询

这到底是什么';拒绝未经授权';对我来说是什么意思?

什么使用/尊重 .node-version 文件?

构建 vue cli 后如何运行生产站点

运行摩卡+伊斯坦布尔+通天塔

使用 Webpack 和 font-face 加载字体

续集findbyid不是一个函数,但显然findAll是

node.js 中的意外保留字导入