无法从Node.Js API上的MongoDb检索数据

时间:2016-08-05 03:33:37

标签: node.js mongodb azure

我在Azure上托管了MongoDb服务器。我现在正在构建一个Node.js API,用于从其中一个数据库(即表:Word;数据库:MyDatabase)上的表中检索数据。我在this tutorial之后构建了API,但我无法从中成功检索任何数据......

我知道服务器已启动并且正在运行且也可以访问,因为我可以通过tcp连接到它:

psping [Azure's Public IP]:27017

现在,我有一个node.js api,代码如下: 1)app / 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,西班牙语,法语(意思是在两种语言中都有单词使其成为翻译者)。模型看起来像这样:2)app / models / 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;

现在,我去找邮递员并获取以下内容: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)

2 个答案:

答案 0 :(得分:1)

我认为您在查找时遗失 A B new_col 0 1 3 1 1 0 3 1 2 1 2 1 3 0 1 0 4 0 0 0 5 1 4 0

{}

希望这会有所帮助。

编辑: -

根据doc的文档,find函数接受第一个参数作为对象并将其视为条件,而不是回调函数。

答案 1 :(得分:1)

正如您在评论中提到的,文档是从db.word.find()检索到的,我认为我发现了问题。您需要将文档放入名为words的集合中,而不是word

Mongoose将使用您的型号名称的复数版本。有关详细信息,请参阅http://mongoosejs.com/docs/models.html