2017-01-29 9 views
0

この質問では、私のconfig.js、model.js、およびserver.jsファイルは関連していると思います。誰もが郵便配達員に200のコードを持つ空の配列を返す理由を誰でも説明できますか?私のmongoシェルでは、コレクションとファイルにアクセスして見ることができます。私のnode.js GET呼び出しは、mongo .find()から空の配列を返します。

ここでは、server.jsファイルで作成しようとしているGET呼び出しを示します。応答は、私がインポートしたmongo dbからの私のファイルの配列でなければなりません。

const {PORT, DATABASE_URL} = require('./config'); 
const {BlogPost} = require('./models'); 

app.get('/posts', (req, res) => { 
    BlogPost 
    .find() 
    .exec() 
    .then(posts => { 
     res.json({ 
      posts: posts.map(
      (post) => post.apiRepr()) 
     }); 
    }) 
    .catch(
     err => { 
     console.error(err); 
     res.status(500).json({message: 'Internal server error'}); 
    }); 
}); 

作成およびエクスポートブログ投稿スキーマを、それをエクスポートしている私のモデルファイルは、次のとおり

const blogPostSchema = mongoose.Schema({ 
    title: {type: String, required: true}, 
    content: {type: String, required: true}, 
    author: { 
    firstName: {type: String, required: true}, 
    lastName: {type: String, required: true} 
    } 
}); 
blogPostSchema.virtual('authorString').get(function() { 
    return `${this.author.firstName} ${this.author.lastName}`.trim()}); 

blogPostSchema.methods.apiRepr = function() { 

    return { 
    id: this._id, 
    title: this.title, 
    author: this.authorString, 
    content: this.content 
    } 
}; 

const BlogPost = mongoose.model('BlogPost', blogPostSchema); 
module.exports = {BlogPost}; 

上記のconst {PORT、DATABASE_URL}コマンドBYTインポートされている設定ファイルは、次のとおり

exports.DATABASE_URL = process.env.DATABASE_URL || 
         global.DATABASE_URL || 
         'mongodb://localhost/mongoose-blog'; 

exports.PORT = process.env.PORT || 8080; 

そして最後に、出力は私が私のポストマンに取得しています(GETのローカルホストに入れた後:8080 /ポスト)、キー:定数型値:私のヘッダー内のアプリケーション/ JSONは次のとおりです。

{ 
    "posts": [] 
} 
+0

.then(ポスト=> { res.json({ 記事:posts.map( (ポスト)=> post.apiRepr()) }); })私はこの問題は、この一部であると思いますコード。ここでconsole.log()を試してみて –

+0

に感謝します。 console.log(posts);私に空の配列を与える[] – John

答えて

0

localhost:8080/postsにする必要はありませんか?あなたのゲットルートには/投稿とあなたの投稿/投稿が表示されます。

+0

いいえ、これはちょうどこれがブログアプリなのでちょっと混乱しています。だから私は実際にブログにすべての投稿を取得しています。 – John

0

問題は、コードのこの部分にあった:マングースで

const BlogPost = mongoose.model('BlogPost', blogPostSchema); 
module.exports = {BlogPost}; 

私のDBは、私がしようとしたブログ投稿以外のもの、しかし、マングースは複数形と.toLowerCase(のために知られている)と名付けられた - INGのコレクション。したがって、私のコレクションがBlogPostなら、それは "blogposts"を使用していたシーンの背後にあってもうまくいったでしょう。

関連する問題