2015-10-24 20 views
6

私はUnhandled rejection TypeError: feed.create is not a functionエラーを受け取りました。なぜそれが発生するのか理解できません。ここで何が問題なの?sequelize .createは関数エラーではありません

ここに私のコードです。私はルート/ 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); 
    }); 
}); 

答えて

11
あなただけで、それを必要とすることで、ファイルから変数に到達することはできません

もう一つ。すべての変数を1つの場所に保持し、module.exportsに代入するオブジェクトリテラルを定義するか、別々のファイルから別々の変数をインポートする必要があります。

あなたの場合、テーブルスキーマを保持する別々のファイルを作成し、sequelize.importで1つのファイルの下にインポートしてから、そのファイルを要求します。

モデル/ index.js:このよう

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

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

モデル/ 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:{ 

     } 
    } 
    }); 
}; 

次に、このように各モデルのインポート

これは役立ちます。

+1

私はこのエラーに遭遇しています。 '不定期のプロパティ' all 'を読み取ることができません。 –

関連する問題