2017-05-31 71 views
0

我是node.js的新手。這是我第一次嘗試。我正在構建一個小型Web應用程序,它在瀏覽器上顯示來自MongoDB的數據。節點JS:類型錯誤:無法讀取undefined的屬性

這是我的index.js文件

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 
var mongoose = require('mongoose'); 

Company = require('./models/company'); 

//connect to mongoose 
mongoose.connect('mongodb://localhost/rs_active_members'); 
var db = mongoose.connection; 

app.get('/',function(req, res) { 
    res.send('Hello World!'); 
}); 

app.get('/api/companys', function(req, res) { 
Company.getCompanys(function(err, companys) { 
    if(err) { 
     throw err; 
    } 
    res.json(companys); 
    }); 
}); 
app.listen(8080); 
console.log('Running on port 8000...'); 

這是我company.js文件

var mongoose = require('mongoose'); 

//Generate Schema 

var companySchema = mongoose.Schema({ 
    name:{ 
     type: String, 
     required: true 
    }, 
    create_date:{ 
    type: Date, 
    default: Date.now 
    } 

}); 

var Company = module.exports = mongoose.model('Company',companySchema) 

// Get Companys 

module.exports.getCompanys = function(callback, limit){ 
Company.find(callback).limit(limit); 
} 

的錯誤是

TypeError: Cannot read property 'getCompanys' of undefined 
at C:\Projects\rs_active_members\index.js:17:9 
at Layer.handle [as handle_request] (C:\Projects\rs_active_members\node_modules\express\lib\router\layer.js:95:5) 
at next (C:\Projects\rs_active_members\node_modules\express\lib\router\route.js:137:13) 
at Route.dispatch (C:\Projects\rs_active_members\node_modules\express\lib\router\route.js:112:3) 
at Layer.handle [as handle_request] (C:\Projects\rs_active_members\node_modules\express\lib\router\layer.js:95:5) 

任何人都可以請幫我在哪兒」錯了嗎?謝謝。

+0

您正在聲明模型導出後的靜態。做之前。並更正語法。順便說一句,你永遠不會傳入'limit'參數,這將是另一個錯誤。 –

+0

@NeilLunn - 這與什麼有關? – jfriend00

回答

0

我會重組它是這樣:

Company.methods.getCompanies = (cb, limit) => { 
    return this.model('Animal') 
    .find({ type: this.type }) 
    .limit(limit) 
    .exec(cb); 
}; 

然後module.exports = mongoose.model('Company',companySchema) 這將允許你這樣做:

const Company = require('../models/company'); 
let newCompany = new Company(params); 

確保諮詢貓鼬文檔這是非常好的,只要你卡住

+0

感謝Yash的幫助。錯誤已解決。 :) –

相關問題