У меня есть сервер MongoDb, размещенный на Azure. Я теперь создаю Node.js API, предназначенный для извлечения данных из таблицы в одной из баз данных (т. Е. Таблицы: Word; database: MyDatabase). Я построил API после this tutorial, но я не смог успешно извлечь из него какие-либо данные ...Не удалось получить данные из MongoDb в Node.Js API
Я знаю, что сервер запущен и доступен, так как я могу подключиться к нему через tcp через:
psping [Azure's Public IP]:27017
Теперь у меня есть Node.js API со следующим кодом: 1) приложение/server.js
var express = require('express'); // call express
var app = express(); // define our app using express
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.connect('mongodb://[Azure's public IP]:27017/MyDatabase');
var Word = require('./models/word');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080; // set our port
// ROUTES FOR API
var router = express.Router(); // get an instance of the express Router
// middleware to use for all requests
router.use(function(req, res, next) {
// do logging
console.log('Something is happening.');
next();
});
router.get('/', function(req, res) {
res.json({ message: 'hooray! welcome to our api!' });
});
router.route('/words')
.get(function(req, res) {
Word.find(function(err, words) {
if (err)
res.send(err);
res.json(words);
});
});
// more routes for our API will happen here
// REGISTER OUR ROUTES -------------------------------
// all of our routes will be prefixed with /api
app.use('/api', router);
// START THE SERVER
// =============================================================================
app.listen(port);
console.log('Magic happens on port ' + port);
Я также написал модель для моей единственной таблицы в базе данных, который имеет 3 столбца: автогенератор ObjectId, испанский, французский (mea nt иметь слова на обоих языках, чтобы заставить его работать как переводчик). Модели выглядят следующим образом: 2) приложение/модель/word.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var WordSchema = new Schema({
spanish: String,
french: String
})
var Word = mongoose.model('Word',WordSchema);
module.exports = Word;
Теперь, я иду к почтальону и GET на следующий: http://localhost:8080/api/words; который возвращает [].
На бревнах MongoDB я вижу следующее:
2016-08-05T03:16:26.520+0000 I NETWORK [conn60] end connection [Some IP]:[Some port] (1 connections now open)
2016-08-05T03:31:11.878+0000 I NETWORK [initandlisten] connection accepted from [Some IP]:[Some port] #61 (1 connection now open)
Вы дважды проверяли наличие документов в вашей коллекции. Из результата видно, что нет. –
Есть! Я вижу их, выполняя «использование MyDatabase» «db.word.find()« – Victor
Я думаю, что нашел проблему. См. Мой ответ ниже. –