所以我目前正在学习如何使用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
任何提示?
答案 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上定义的集合名称