2016-10-10 85 views
0

我是新的nodejs,所以我有應用程序,現在與mongodb連接我有api getAllDiagrams在應該發送所有圖數據到客戶端的路由器,我試圖實現的方法是我想從控制器調用數據庫,一旦我有數據我會要求在路由器和發送給客戶端,下面的代碼我不能使它的工作,並得到錯誤then is not defined。任何想法是什麼實施錯誤或任何更好的方式來使用這種方法。如何使用mongoose模式獲取數據並將其發送給客戶端?

app.js

var express = require('express'); 
var app = express(); 
var router = express.Router(); 
var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/develop-modeler'); 
require('./server/api/diagram/diagram.model.js'); 

mongoose.connection.on('error', function(err) { 
    console.error('MongoDB connection error: ' + err); 
}); 

app.use(express.static(path.join(__dirname, 'public'))); 

app.listen(8760, function() { 
    console.log('I am listening 8760...'); 
}) 

diagram.controller.js

var Diagram = require('./diagram.model'); 
    var mongoose = require('mongoose'); 

    module.exports = function index(req, res) { 
    Diagram.find({}, function(err, result) { 
    if (!err) { 
     console.log('Response from controller', result); 
     return res.send(result); 
    } 
    }); 
} 

diagram.model.js

var mongoose = require('mongoose'); 

/*var User = require('../user/user.model.js'); 
var Group = require('../group/group.model.js');*/ 

var DiagramSchema = new mongoose.Schema({ 
    text: String, 
    owner: {type: String, ref:'User'}, 
    groups: [{type: String, ref: 'Group'}], 
    users: [{type: String, ref: 'User'}], 
    string: String 
}); 

mongoose.model('Diagram', DiagramSchema); 

router.js

var express = require('express'); 
var controller = require('./diagram.controller'); 

var router = express.Router(); 

console.log('THis is in router',controller.index()); 
router.get('/getAllDiagram',controller.index()); 

/*router.get('/', controller.index);*/ 

module.exports = router; 
+0

爲什麼玉使用'Diagram.find.then'在查詢是否有任何承諾您使用的? – abdulbarik

+0

我沒有使用任何承諾,所有的代碼被粘貼的問題。 – hussain

回答

1

當我看到你沒有使用任何承諾的東西,但希望在您的查詢返回一個承諾,。但它是工作的承諾方式,這就是爲什麼你收到此錯誤

var express = require('express'); 
var controller = require('./diagram.controller'); 
var router = express.Router(); 
router.get('/getAllDiagram',controller.index()); 

module.exports = function index(req, res) { 
    Diagram.find({}, function(err, result) { 
    if (!err) { 
     console.log('Response from controller', result); 
     return res.send(result); 
    } 
    }); 
} 

更新架構這樣

var mongoose = require('mongoose'); 

/*var User = require('../user/user.model.js'); 
var Group = require('../group/group.model.js');*/ 

var DiagramSchema = mongoose.Schema({ 
    text: String, 
    owner: {type: String, ref:'User'}, 
    groups: [{type: String, ref: 'Group'}], 
    users: [{type: String, ref: 'User'}], 
    string: String 
}); 

module.exports=mongoose.model('Diagram', DiagramSchema); 
+0

TypeError:Diagram.find不是函數 – hussain

+0

您可以在模式中刪除'new'關鍵字,然後嘗試嗎? – abdulbarik

+0

同樣的錯誤'TypeError:Diagram.find不是函數' – hussain

相關問題