2017-02-11 6 views
0

私はexpress/mongooseを初めて使い、ユーザーと投稿の関係を実装しようとしています。マングース1:たくさんの親関係が保存されない(定義されていない)

私は2つのmodels

// *models/user.js 

var mongoose = require('mongoose'); 

var userSchema = mongoose.Schema({ 
     email: {type: 'string'}, 
     password: {type: 'string'}, 
     posts: [{type: mongoose.Schema.Types.ObjectId, ref: 'Post'}] 
    }); 
module.exports = mongoose.model('User', userSchema); 

// *models/post.js 

var mongoose = require('mongoose'); 

var postSchema = mongoose.Schema({ 
    user : { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, 
    body: String, 
    title: String 
}); 

module.exports = mongoose.model('Post', postSchema); 

server.js

Post = require('./models/post'); 
User = require('./models/user'); 

app.post('/api/posts',(req,res)=>{ 

    User.findOne({email: "valid_email"},(err, user)=>{ 

    var post = { 
     title: "Post 1 Title", 
     body: "Post 1 body", 
     user: user._id 
    } 
    Post.create(post, (err, post)=>{ 
     res.send(post); 
    }); 
    }); 
}); 

を持って、このアプローチは、電子メール、 "VALID_EMAIL" とユーザーに属するPostを保存するために働いている.I人口を増やすことでユーザーにアプローチできます

app.get('/post', (req,res)=>{ 
    Post.findOne(title: "Post 1 title") 
.populate('user') 
.exec(function (err, user) { 
    if (err) throw err; 
    console.log(user._id, user.email); 
    res.end(); 
}); 
}); 

私は私が「user.posts」に手動でプッシュすることはできません、ユーザーを見つけるのコールバックでPostを生成すると、自動的にのみ、それがどのように動作するかではないユーザーのposts.Notにそれをプッシュするだろうと思いました。

私はconsole.log(user.posts)が私にundefinedを得るとき、未定義に "押す"ことができないと言います。

私は投稿belongsToを生成することができます、それでは、それはちょうどそれによってidのユーザーを設定することができますが、ユーザーに投稿をプッシュできませんか?それは未定義の "user.posts"を与えますか?

+0

Ravi Shankarが適切な編集に感謝します。 –

答えて

0

!!!私はそれを働かせた。

app.post('/api/posts', (req,res)=>{ 
    User.findOne({id: _some_user_id}, (err,user)=>{ 
    var poster = user; 
    var post = {title: req.body.title, body: req.body.body, category: req.body.category, user: poster} 
    Post.create(post, (err,post)=>{ 
     res.send(post); 
     poster.posts.push(post); 
     poster.save(); 
    }); 
    }); 
}); 
関連する問題