#node.js #mongodb #mongojs
#node.js #mongodb #mongojs
Вопрос:
Я новичок в MongoDB и начал создавать тестовое приложение, которое выглядит следующим образом:
server.js
var express = require('express');
var path = require('path');
var bodyParser = require('body-parser');
var index = require('./routes/index');
var tasks = require('./routes/tasks');
var port = 8081;
var app = express();
// View Engine
app.set('views',path.join(__dirname,'views'));
app.set('view engine','ejs');
app.engine('html',require('ejs').renderFile);
// Set Static Folder
app.use(express.static(path.join(__dirname,'client')));
// Body parser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended : false}));
app.use('/',index);
app.use('/api',tasks);
app.listen(port,function(){
console.log('Server started at port : ' port);
});
и мой файл задач
tasks.js
var express = require('express');
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb://user:pass@ds063186.mlab.com:63186/mytaskslist_ahsan',['tasks']);
router.get('/tasks',function(req,res,next){
db.tasks.find(function(tasks,err){
if(!err) res.json(tasks);
});
});
module.exports = router;
Но когда я пытаюсь / api / tasks с помощью Postman, ответа не возвращается. Он продолжает загружаться некоторое время, а затем сообщает «Не удалось получить никакого ответа».
Я также пробовал консоль.зарегистрируйте мою db
переменную, и она покажет пустой объект, который означает, что он не подключается к базе данных.
Примечание Я попытался подключиться к своему локальному экземпляру базы данных, и это работает, также моя строка подключения в реальном времени работает в RoboMongo, но по-прежнему не подключается с использованием приведенного выше кода.
Ответ №1:
Couldn't get any response
говорит, что вы не отвечаете на запрос. Если есть ошибка, вы не отправляете и не регистрируете ее. Верните ошибку с помощью next
и запишите ее в регистраторе ошибок.
db.tasks.find(function(tasks, err){
if(err) {
return next(err)
}
res.json(tasks);
});
И до app.listen
app.use((err, req, res, next) => {
console.log(err.stack || err.message);
if (res.headersSent)
return next(err)
res.status(500).send('Internal Server Error')
})
Если вам нужна дополнительная помощь, отправьте сообщение об ошибке
Комментарии:
1. что он выводит после реализации выше
Internal Server Error
, но я не вижу никакой ошибки в своем коде2. Мы возвращаем это как сообщение об ошибке к http-запросу. Реальное сообщение об ошибке находится в консоли. Что вы не раскрываете конфиденциальную информацию
3. я думаю, что это не чувствительно :-), это просто
undefined
4. но это может быть чувствительно. неопределенный очень помогает. На самом деле ошибки нет, но аргументы приведены в неправильном порядке. Сначала
err
затемtasks
5. действительно, я имею в виду, действительно!!!!! . невероятно, что я пропустил эти мелочи, спасибо, чувак!!!! это работает