Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js sequelize.create不是函数错误_Node.js_Express_Sequelize.js - Fatal编程技术网

Node.js sequelize.create不是函数错误

Node.js sequelize.create不是函数错误,node.js,express,sequelize.js,Node.js,Express,Sequelize.js,我收到未处理的拒绝类型错误:feed.create不是一个函数错误,我无法理解为什么会发生。这里有什么问题 这是我的密码。我可能没有在这里做一些非常基本的事情,因为我无法在routes/index.js中访问提要变量 如果我添加module.exports=feed;对于我的模型文件,我可以访问它,但我有多个模型,因此如果我在提要下面添加其他模型,它们会覆盖它 db.js models.js var db = require('./db'), sequelize = db.sequeli

我收到
未处理的拒绝类型错误:feed.create不是一个函数
错误,我无法理解为什么会发生。这里有什么问题

这是我的密码。我可能没有在这里做一些非常基本的事情,因为我无法在routes/index.js中访问提要变量

如果我添加module.exports=feed;对于我的模型文件,我可以访问它,但我有多个模型,因此如果我在提要下面添加其他模型,它们会覆盖它

db.js

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
});
routes/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);
    });
});

您无法通过仅在另一个文件中要求变量来访问文件中的变量。您需要定义一个对象文字,将所有变量保存在一个位置,并将其分配给
模块。导出
,或者需要分别从不同的文件导入它们

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

像这样:

models/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);
});
models/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:{

      }
    }
  });
};
然后按如下方式导入每个模型:

var Users=require(“MODELS\u FOLDER\u PATH”)。用户


希望这能有所帮助。

您可能想查看下面链接上给出的答案。为了解决同一问题,我可以使用
const User=sequelize.import(“../models/users”),而不是从“../models/users”导入用户

只要使用

const{User}=require(../models”);

我遵循了此操作,出现错误
无法读取未定义的属性“all”
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:{

      }
    }
  });
};