繁体   English   中英

猫鼬1:许多父母关系无法保存(说未定义)

[英]Mongoose 1:Many Parent Relation Doesn't Save (says undefined)

我是新来express/mongoose并尝试实现User-Post关系。又称1:很多。

我有两个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 。我可以通过填充来联系其用户。

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();
 });
});

我以为在找到用户的回调中生成Post会自动将其推送到User的posts。不仅不是它的工作方式,我也不能手动将其推送到“ user.posts”。

它说不能“推”到undefined。当我console.log(user.posts)我得到undefined

我怎样才能生成一个帖子belongsTo于用户,然后我可以仅通过其id填充用户,但不能将帖子推送给用户? 它给出了未定义的“ user.posts”?

我知道了

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();
    });
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM