我有一个在mongodb上的nodejs上运行的API,我正在尝试从reactjs前端插入数据。 这些数据来自用户的令牌和用户感兴趣的书的ID
型号:
let BookInterested = new Schema({
book: {
type: Schema.Types.ObjectId,
ref: "Book",
required: true
},
user: { type: Schema.Types.ObjectId, ref: "User", required: true },
timestamp: { type: Date, default: Date.now, required: true },
completed: { type: Boolean, default: false }
});
module.exports = mongoose.model("BookInterested", BookInterested);
用户和图书来自其他模型,分别是图书和用户。
我有一个带有简单发布方法的路线:
路线:
router.post(
"/book/:bookId/interesteds",
auth.authenticate(),
(req, res) => {
meService.createInterested(req, res);
}
);
服务具有路线背后的所有逻辑。
meService:
createInterested: function(req, res) {
let interested = {
user: req.user.id, //User Id from token
book: req.params.bookId, //book Id from route
};
let record = new BookInterested(interested);
record.save(err => {
if (err) return helper.error(res, "Error while creating " + err);
if (!record) return helper.error(res, "Record not found");
return res.json({ success: true });
});
},
在我的前端,它是在reactjs中,我具有获取书籍和用户的功能
componentWillMount() {
this.retrieveBooks(this.props.params.id);
this.retrieveUser();
}
with正常工作,我现在的问题是我需要一个按钮,用户单击该按钮时,它会表明他或她对该书感兴趣,就像这样:
<Button
onClick={() => this.setState({ open: !open, disabled: true })}
className="btn btn-big btn-tenho-interesse"
aria-expanded={open}
disabled={this.state.disabled}
>
Im Interested
</Button>
我创建了handleclick函数,但是它不起作用
handleclick:
handleClick = (req, res) => {
console.log(req);
Request.post(
`/me/books/${this.props.params.id}/interesteds`,
req,
res,
res => {
if (res.success) {
Alert.success(
"success"
);
} else
Alert.error(
"error"
);
}
);
};
我遇到各种错误,例如“ TypeError:将圆形结构转换为JSON”和“ res.json不是函数”等等。
你知道我该怎么做吗?
谢谢。