sequelize“findbyid”不是一个功能,但显然是“findAll”

时间:2017-01-10 20:16:54

标签: node.js orm sequelize.js

我在sequelize中遇到一个非常奇怪的问题,当我尝试调用函数findAll时它工作正常(同样适用于create和destroy),但是当我尝试调用函数“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");
        })
    });

Gamme.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;
};

3 个答案:

答案 0 :(得分:23)

在Sequelize v5中,将findById()替换为findByPk()。使用findByPk替换findById,一切正常。

答案 1 :(得分:2)

sequelize团队正在删除此功能,并以新功能替换它

  

findByPk

喜欢

// search for known ids
Project.findByPk(123).then(project => {
  // project will be an instance of Project and stores the content of the table entry
  // with id 123. if such an entry is not defined you will get null
})

答案 2 :(得分:0)

直接传递值。

Question.findByPk(question_id).then(question => {
            return res.status(200).json({
                question: question
           });
}).catch(err => {
     console.log(err);
});