2015-10-24 6 views
6

मुझे Unhandled rejection TypeError: feed.create is not a function त्रुटि मिल रही है और मुझे समझ में नहीं आ रहा है कि ऐसा क्यों होता है। यहाँ क्या समस्या है?अनुक्रमित करें .create एक फ़ंक्शन त्रुटि नहीं है

मेरा कोड यहां है। मैं शायद यहां कुछ मौलिक नहीं कर रहा हूं क्योंकि मैं मार्ग/index.js में फीड वैरिएबल तक नहीं पहुंच सकता।

यदि मैं module.exports = फ़ीड जोड़ता हूं; मेरे मॉडल फ़ाइल में, मैं इसे प्राप्त कर सकता हूं, लेकिन मेरे पास एक से अधिक मॉडल हैं, इसलिए यदि मैं फ़ीड के नीचे अतिरिक्त मॉडल जोड़ता हूं, तो वे इसे ओवरराइड करते हैं।

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

आप एक फ़ाइल से एक चर नहीं पहुँच सकते हैं, केवल में यह आवश्यक बनाकर और एक। आपको अपने ऑब्जेक्ट को एक ही स्थान पर रखने के लिए किसी ऑब्जेक्ट शाब्दिक को परिभाषित करने की आवश्यकता है और इसे module.exports पर असाइन करना होगा, या आपको उन्हें अलग-अलग फ़ाइलों से अलग से आयात करने की आवश्यकता है।

आपके मामले में, मैं तालिका स्कीमा रखने के लिए अलग-अलग फाइलें बनाउंगा, और फिर उन्हें एक फ़ाइल के तहत sequelize.import द्वारा आयात करें, फिर उस फ़ाइल की आवश्यकता होगी।

इस तरह:

मॉडल/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

मैंने इसका पालन किया है मुझे त्रुटि मिल रही है 'संपत्ति को पढ़ नहीं सकता' सभी 'अपरिभाषित' –

संबंधित मुद्दे