【发布时间】: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