Unhandled rejection TypeError: feed.create is not a function
エラーが発生し、なぜ発生するのか理解できません。ここでの問題は何ですか?
これが私のコードです。ルート/index.jsのフィード変数に到達できないため、ここではおそらくそれほど基本的なことはしていません。
Module.exports = 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;
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
});
ルート/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);
});
});
別のファイルで変数を要求するだけでは、ファイルから変数に到達することはできません。すべての変数を1つの場所に保持するオブジェクトリテラルを定義して_module.exports
_に割り当てるか、別のファイルから個別にインポートする必要があります。
あなたの場合、テーブルスキーマを保持するために個別のファイルを作成し、それらを1つのファイルの下に_sequelize.import
_でインポートしてから、そのファイルを要求します。
このような:
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_FOLDER_PATH").Users;
お役に立てれば。