【问题标题】:Populate posts with author and display author - mern使用作者填充帖子并显示作者 - mern
【发布时间】:2020-11-28 01:12:47
【问题描述】:

我正在尝试在帖子和用户/作者之间建立关系,但我正在努力用作者填充帖子并显示帖子的作者。我可以创建具有各种字段的帖子,但是如何使用节点填充帖子中的作者(用户名)并将其显示在反应中?

Post 架构的一部分

const {ObjectId} = mongoose.Schema.Types

...

 author: {
          id: { 
            type: ObjectId,
            ref: "User"
        },
         username: String
     },

控制器/posts.js

exports.create = (req, res) => {
 const {title, body, date } = req.body
  const post = new Post({title, body, date, author: ........ })
  

  post.save()
  .then(response => {res.send(response)})
    .catch(err => {
      res.send(err)
      })
    }

exports.list = (req, res) => {
  Post.find()
   .populate("author", "_id name")
  .select("-photo")
 .limit(5)
 .exec((err, posts) => {
    if (err) {
      res.send(err);
    } 
     res.send(posts)
  })
}

组件/CreatePost.js

 class CreatePost extends React.Component {
     constructor(props) {
         super(props)
     
         this.state = {
              title: '',
              body: ''
         }
     }

     changeHandler = (e) => {
        this.setState({ [e.target.name]: e.target.value })
    }

    submitHandler = e => {
        e.preventDefault()
        axios({ url: `${API}/new-post`, method: 'POST', data: this.state})
        .then(response => {
            console.log(response)
        }).catch(error => {
            console.log(error)
        })
    }

    render() {
        const {title, body} = this.state
        return (
            <div>
                <form onSubmit={this.submitHandler}>
                <input type="text" name="title" 
                onChange={this.changeHandler} value={title} />
                <input type="text" name="body"
                onChange={this.changeHandler} value={body}/>
                <button type="submit">Submit</button>
                </form>
            </div>
        )
    }
}
export default CreatePost

【问题讨论】:

  • 您能发布此呼叫的网络响应吗? axios({ url: ${API}/new-post, method: 'POST', data: this.state})

标签: node.js reactjs mongoose mern


【解决方案1】:

您没有在 create 控制器中填充作者。考虑以下几点:

exports.create = (req, res) => {
 const {title, body, date } = req.body
  const post = new Post({title, body, date, author: ........ }).populate('author', '_id name')

就像在 .list 控制器中所做的那样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-08
    • 2020-05-18
    • 2021-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多