【问题标题】:Sequelize not defined续集未定义
【发布时间】:2016-11-05 05:11:19
【问题描述】:

我正在为我的 orm 数据库使用 sequelize。我正在使用mysql。

运行项目时出现此错误。

var accounts = sequelize.define('OkAkun' , {//attrbut 
                         ^

ReferenceError: sequelize is not defined
    at module.exports (/path_to_project/Backend/app/models/OkAkun.js:7:26)
    at Sequelize.import (/path_to_project/Backend/node_modules/sequelize/lib/sequelize.js:691:30)
    at /path_to_project/Backend/app/models/index.js:30:32
    at Array.forEach (native)
    at Object.<anonymous> (/path_to_project/Backend/app/models/index.js:29:3)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/path_to_project/Backend/app/routes/routers.js:4:13)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)

看看我的文件

index.js

"use strict";
var fs = require('fs');
var path = require ('path');
var Sequelize = require ('sequelize');
var basename = path.basename(module.filename);
var env = process.env.NODE_ENV || "development";
var dbConfig =require(__base + "config/initializers/config.js").database;
var sequelize;

sequelize = new  Sequelize(dbConfig[env].database , dbConfig[env].username , dbConfig[env].password,
            {
                "dialect": "mysql",
                "host"  :dbConfig[env].host,
                "port"  :dbConfig[env].port,
                "logging": false,
                "define": {underscored: true}
            });

var db = {};

fs
.readdirSync(__dirname)
.filter(function(file){
    return (file.indexOf(".") !== 0) && (file !== basename);
})
 .forEach(function(file) {
    var model  = sequelize.import(path.join(__dirname,file));
    db[model.name] = model;
 });

Object.keys(db).forEach(function (modelName){
    if("associate" in db[modelName]){
        db[modelName].associate(db);
    }
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;



module.exports = db;

这是我的模型。当我运行项目时。它显示未定义续集的错误。

OkAkun.js

module.exports  = function () {

var accounts = sequelize.define('OkAkun' , {//attrbut 

    id_akun : {
        autoIncrement: true,
        type : DataTypes.INTEGER,
        allowNull: false,
        primaryKey : true
    },
    username:{
        type : DataTypes.STRING,
        allowNull: false
    },
    phone_number:{
        type: DataTypes.STRING,
        allowNull:false
    },
    email : {
        type: DataTypes.STRING,
        allowNull: true
    },
    create_at : {
        type: DataTypes.DATE,
        allowNull: false    
    },
    update_at : {
        type : DataTypes.DATE,
        allowNull: false
    },
    password : {
        type: DataTypes.STRING,
        allowNull: false
    }
});

return accounts;

};

仅供参考,我是使用 orm 作为数据库的新手,例如 sequelize。而且我不明白我在这里缺少什么步骤。

有什么想法吗?

【问题讨论】:

    标签: mysql node.js sequelize.js


    【解决方案1】:

    您需要将sequelizeDataTypes 添加到模型函数的参数中。当您执行sequelize.import 时,Sequelize 将传递这些。

    有关工作示例,另请参阅 https://github.com/sequelize/express-example/blob/master/models/task.js

    【讨论】:

    • 是的,就是这样。谢谢你。但它得到了其他错误。表“OkAkuns”不存在。正如我在模型 OkAkun.js 中定义的那样,我的表是没有“s”的“OkAkun”。我在这里想念什么?谢谢
    • 请您添加任何链接教程以使用从零开始的续集。
    • Sequelize 在确定表名时会自动复数你的模型名。您可以通过将freezeTableName: true 传递给模型选项来禁用此功能。官方文档是一个很好的起点;这是我学习 Sequelize 的地方 :) sequelize.readthedocs.org
    猜你喜欢
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2019-05-19
    • 1970-01-01
    • 2020-01-23
    • 2019-06-25
    • 2018-11-26
    相关资源
    最近更新 更多