sequelize .create不是函数错误

sal*_*lep 7 node.js express sequelize.js

我收到Unhandled rejection TypeError: feed.create is not a function错误,我无法理解为什么会发生错误.这有什么问题?

这是我的代码.因为我无法在routes/index.js中找到feed变量,所以我可能不会在这里做一些非常基本的事情.

如果我添加module.exports = feed; 到我的模型文件,我可以达到它,但我有多个模型,所以如果我在Feed下面添加其他模型,它们会覆盖它.

db.js

var Sequelize = require('sequelize');
var sequelize = new Sequelize('mydatabase', 'root', 'root', {
    host: 'localhost',
    dialect: 'mysql',
    port: 8889,

    pool: {
        max: 5,
        min: 0,
        idle: 10000
    },
    define: {
        timestamps: false
    }
});

var db = {};
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
Run Code Online (Sandbox Code Playgroud)

models.js

var db = require('./db'),
    sequelize = db.sequelize,
    Sequelize = db.Sequelize;

var feed = sequelize.define('feeds', {
    subscriber_id: Sequelize.INTEGER,
    activity_id: Sequelize.INTEGER
},
{
    tableName: 'feeds',
    freezeTableName: true
});
Run Code Online (Sandbox Code Playgroud)

路线/ index.js

var express = require('express');
var router = express.Router();
var models = require('../models');

router.get('/addfeed', function(req,res) {
    sequelize.sync().then(function () {
        return feed.create({
            subscriber_id: 5008,
            activity_id : 116
        });
    }).then(function (jane) {
        res.sendStatus(jane);
    });
});
Run Code Online (Sandbox Code Playgroud)

0xm*_*mtn 14

您无法从文件中获取变量,只需要在另一个变量中.您需要定义一个对象文字以将所有变量保存在一个位置并将其分配给module.exports,或者您需要分别从不同的文件中导入它们.

在您的情况下,我将创建单独的文件来保存表模式,然后通过sequelize.import一个文件导入它们,然后需要该文件.

像这样:

车型/ index.js:

var sequelize = new Sequelize('DBNAME', 'root', 'root', { 
  host: "localhost",           
  dialect: 'sqlite',           

  pool:{
    max: 5, 
    min: 0,
    idle: 10000                
  },

  storage: "SOME_DB_PATH"
}); 

// load models                 
var models = [                 
  'Users',            
];
models.forEach(function(model) {
  module.exports[model] = sequelize.import(__dirname + '/' + model);
});
Run Code Online (Sandbox Code Playgroud)

车型/ Users.js

var Sequelize = require("sequelize");

module.exports=function(sequelize, DataTypes){ 
  return Users = sequelize.define("Users", {
    id: {
      type: DataTypes.INTEGER, 
      field: "id",             
      autoIncrement: !0,       
      primaryKey: !0
    },
    firstName: {               
      type: DataTypes.STRING,  
      field: "first_name"      
    },
    lastName: {                
      type: DataTypes.STRING,  
      field: "last_name"       
    },
  }, {
    freezeTableName: true, // Model tableName will be the same as the model name
    classMethods:{

      }
    },
    instanceMethods:{

      }
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

然后像这样导入每个模型:

var Users = require("MODELS_FOLDER_PATH").Users;

希望这可以帮助.

  • 我已经遵循了这个要求,但出现错误“无法读取未定义的属性'all'”。 (2认同)

小智 5

只需使用

const { User } = require("../models");
Run Code Online (Sandbox Code Playgroud)