简单节点api请求不显示任何数据

时间:2017-07-28 03:25:35

标签: javascript node.js mongodb express mongoose

看看我的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

2 个答案:

答案 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()函数才能实际传输数据。