我正在使用 MERN 堆疊進行反應專案。在資料庫中創建收藏夾物件時,userFrom 回傳 null。雖然一切都存在。在用戶模型中,我沒有將角色參考到用戶的問題。我嘗試從用戶中洗掉對角色模型的參考并再次嘗試,但我仍然遇到同樣的問題。
收藏模型
const mongoose = require('mongoose');
const Favourite = mongoose.model(
"Favourite",
new mongoose.Schema({
movieId : String,
movieTitle: String,
movieImg: String,
userFrom:[
{
type: mongoose.Schema.Types.ObjectId,
ref: "User"
}
]
})
)
用戶模型
const mongoose = require("mongoose");
const User = mongoose.model(
"User",
new mongoose.Schema({
username: String,
email: String,
password: String,
roles: [
{
type: mongoose.Schema.Types.ObjectId,
ref: "Role"
}
]
})
);
module.exports = User;
榜樣
const mongoose = require("mongoose");
const Role = mongoose.model(
"Role",
new mongoose.Schema({
name: String
})
);
module.exports = Role;
最喜歡的路線
const express = require('express');
const router = express.Router();
const { authJwt } = require("../middlewares");
const Favourite = require("../models/favourite.model");
router.use(function(req, res, next) {
res.header(
"Access-Control-Allow-Headers",
"x-access-token, Origin, Content-Type, Accept"
);
next();
});
router.post("/favouriteNumber", [authJwt.verifyToken], (req, res) => {
Favourite.find({"movieId": req.body.movieId})
.exec((err, favourite) => {
if(err) return res.status(400).send(err)
res.status(200).json({success: true, favouriteNumber: favourite.length})
})
})
router.post("/favourited", [authJwt.verifyToken], (req, res) => {
Favourite.find({"movieId": req.body.movieId, "userFrom": req.body.userFrom})
.exec((err, favourite) => {
if(err) return res.status(400).send(err)
let result = false;
if(favourite.length !== 0) {
result = true
}
res.status(200).json({success: true, favourited: result});
})
})
router.post("/addToFavourite", [authJwt.verifyToken], (req, res) => {
const favourite = new Favourite(req.body)
favourite.save((err, doc) => {
if(err) return res.json({success: false, err})
return res.status(200).json({success: true, doc})
})
})
router.post("/removeFavorite", [authJwt.verifyToken], (req, res) => {
Favourite.findOneAndDelete({movieId: req.body.movieId, userFrom: req.body.userFrom})
.exec((err, doc) => {
if(err) return res.json({success: false, err})
return res.status(200).json({success: true, doc})
})
})
module.exports = router;
uj5u.com熱心網友回復:
創建用戶時,您不會將用戶添加到收藏夾中。如果您使用的是 express-jwt,那么您可以使用 req.user 輕松完成:
router.post("/addToFavourite", [authJwt.verifyToken], (req, res) => {
req.body.userFrom = req.user._id
const favourite = new Favourite(req.body)
favourite.save((err, doc) => {
if(err) return res.json({success: false, err})
return res.status(200).json({success: true, doc})
})
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/451912.html
上一篇:什么是參考命令?
