#javascript #node.js #mongodb
#javascript #node.js #mongodb
Вопрос:
У меня есть диаграмма папок, где у меня есть два файла controller и router, теперь я извлек данные из mongodb в контроллере, которые я пытаюсь передать маршрутизатору, чтобы я мог отправить их клиенту с помощью api, но мне не удалось получить ответ в маршрутизаторе, есть идеи, что реализовано неправильно.
Я упомянул папку diagram
, потому что этот маршрутизатор предназначен только для этой конкретной модели, которая будет отправлять ответ только относительно диаграммы.
diagram.controller.js
var Diagram = require('./diagram.model');
var mongoose = require('mongoose');
module.exports = function index() {
Diagram.find({}, function(err, res) {
if (!err) {
console.log('Response from controller', res);
return res;
}
});
}
diagram.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());
module.exports = router;
Ответ №1:
Вам нужно немного изменить свой код.
Первый аспект, который необходимо изменить, — это способ передачи index
функции маршрутизатору. Пожалуйста, убедитесь, что вы не выполняете его напрямую. Эта функция будет вызвана, express
когда запрос попадет на ваш сервер по определенному маршруту.
diagram.router.js
router.get('/getAllDiagram', controller.index);
Следующее изменение касается самой index
функции. Функция получает два параметра express
: req
— объект запроса и res
— объект ответа:
diagram.controller.js
module.exports.index = function index(req, res) {
Diagram.find({}, function(err, result) {
if (err) {
console.error('Something bad happened: ' err.message);
return res.status(500);
}
console.log('Response from controller', result);
res.json(result);
});
};
Пожалуйста, обратите внимание, что я переименовал вашу переменную res
в result
.
Комментарии:
1. Вы переименовали переменную в
Diagram.find({}, function(err, result)
toresult
? В противном случае он перезаписывается, что приводит к указанному исключению.2. Хорошо, вы можете вставить свой код в суть и опубликовать его здесь?
3. у вас нет доступа к gist
4. Код в ответе пока правильный. Есть ли шанс опубликовать свой где-нибудь? Pastebin и т. Д.?