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"を与えますか?
Ravi Shankarが適切な編集に感謝します。 –