node js get得不到任何东西

时间:2018-01-15 20:28:27

标签: javascript node.js mongodb

所以我目前正在学习如何使用Node Js和MongoDB构建Rest API,所以很自然地我一直在关注一些教程,当时间到了,我已经设置了一个例子,但它不起作用。

我有两个主要文件, app.js historic.js (型号)。

app.js 上,我有以下内容:

new_2

然后在我的模型上我有以下内容:

const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

app.use(bodyParser.json());

Historic =require('./models/historic');

// Connect to Mongoose
mongoose.connect('mongodb://localhost/test', { useMongoClient: true });

var db = mongoose.connection;

console.log('Here');
db.on('error', function(err){
  if(err){
    console.log(err);
    throw err;
  } 
});

db.once('open', function callback () {
  console.log('Mongo db connected successfully');
});

app.get('/', (req, res) => {
    res.send('Please use /api/historic');
});


app.get('/api/historics', (req, res) => {
    Historic.getHistorics((err, historic) => {
        if(err){
            throw err;
        }
        res.json(historic);
    });
});

app.listen(27017);
console.log('Running on port 27017...');

每当我尝试访问http://localhost:27017/api/historics/时,我只会得到:[]。

我知道我在数据库上有数据,如图所示: data on DB test

任何提示?

2 个答案:

答案 0 :(得分:0)

根据文档http://mongoosejs.com/docs/2.7.x/docs/finding-documents.html,回调应该至少是.find方法的第二个参数。 尝试替换

{{1}}

{{1}}

答案 1 :(得分:0)

我已被告知解决方案并且有效。

旧代码:

const historicSchema = mongoose.Schema({
    _id:{
        type: String,
        required: true
    },
    url:{
        type: String,
        required: true
    },
    price:{
        type: String,
        required: true
    },
    timestamp:{
        type: String,
        required: true
    }
});

解决方案:

const historicSchema = mongoose.Schema({
    _id:{
        type: String,
        required: true
    },
    url:{
        type: String,
        required: true
    },
    price:{
        type: String,
        required: true
    },
    timestamp:{
        type: String,
        required: true
    }
}, {collection: 'historic'});

我需要添加在Mongoose上定义的集合名称