看看我的server.js文件中有请求
var Post = require('./../models/post');
//GET ALL POSTS
app.get('/api/posts', function (req, res) {
Post.getPosts(function (err, posts) {
if(err) {
throw err;
}
res.json(posts);
});
});
我的post.js模型如下所示:
var mongoose = require('mongoose');
var postSchema = mongoose.Schema({
username: {
type: String,
required: true
},
body: {
type: String,
required: true
},
date: { type: Date,
default: Date.now
}
});
var Post = module.exports = mongoose.model('Post', postSchema);
// Get All Posts
module.exports.getPosts = function (callback, limit) {
Post.find(callback).limit(limit);
};
在我看来,所有代码都写得正确,但它不显示数据,所以如果我有任何记录,我会仔细检查mongoDB:
> show dbs
admin 0.000GB
bookstore 0.000GB
local 0.000GB
ownfb 0.000GB
> use ownfb
switched to db ownfb
> show collections
posts
> db.posts.find()
{ "_id" : ObjectId("597aa5b04c08c647b4efb58d"), "type" : "user", "body" : "POST_Z_MONGOOSE_YO" }
MongoDB看起来不错并且包含一条记录,那么为什么我去网址 http://localhost:5000/api/posts
它除了显示空数组
外什么也没有显示[]
此外,我在cmd / browser中没有收到任何错误。
获取这两个文件的完整代码:
server.js: https://gist.github.com/anonymous/9b04527e97e889dcaa109f3ff459a5da
post.js: https://gist.github.com/anonymous/e77064ae71b5ef6d5a9abfd897187ddf
答案 0 :(得分:1)
您没有将正确的参数传入getPosts()函数。它期待回调和限制...我敢打赌它使用0作为限制,因为你没有给它任何。
OR
你可以尝试只有一个导出。 postSchema.getPosts()是你可以附加方法的地方,然后只导出mongoose.model('Post',postSchema);没有别的。
答案 1 :(得分:0)
app.get('/api/posts', function (req, res) {
Post.getPosts(function (err, posts) {
res.json(posts);
res.end(); // !!!!!
});
// returns here with no results
});
请注意res.end()
之后必须调用的res.json()
函数才能实际传输数据。