2015-10-24 29 views
6

Unhandled rejection TypeError: feed.create is not a function hatası alıyorum ve neden olduğunu anlayamıyorum. Sorun nedir burada?sequelize .create işlev hatası değil

İşte kodum. Rota/index.js'de feed değişkenine erişemediğim için muhtemelen çok temel bir şey yapmıyorum.

Eğer module.exports = feed eklerim; modellerim dosyasına ulaşabilirim, ancak birden fazla modelim var, bu yüzden feed'in altından ek modeller eklerseniz, bunu geçersiz kılarlar.

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

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

cevap

11
Sadece bunu isteyerek, bir dosyadan bir değişken ulaşamaz

bir diğeri. Tüm değişkenlerinizi tek bir yerde tutmak ve module.exports'a atamak için bir nesne değişmezini tanımlamanız gerekir veya bunları farklı dosyalardan ayrı olarak almanız gerekir.

Sizin durumunuzda, tablo şemalarını tutmak için ayrı dosyalar oluşturur ve bunları bir dosya altında sequelize.import'a aktarır, sonra bu dosyayı gerektirir. Bunun gibi

:

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

modeller/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:{ 

     } 
    } 
    }); 
}; 

Sonra böyle her modeli içe

Umarım bu yardımcı olur.

+1

Bunu izledim, hata alıyorum 'Özellik' all 'undefined' okunamıyor –