首页 > 解决方案 > req.user 没有被派去做出反应

问题描述

所以我有一条路线,我可以从猫鼬那里得到决定,但我也想 json res 登录的 userId 。即使我在邮递员上看到它,我也无法将这个值传递给 res.data

// postman test example localhost:8000/api/decision/decisionCode/k65gy
server.get("/api/decision/decisionCode/:decisionCode",         passport.authenticate("jwt", { session: false }),function(req, res) {
  const currentLoggedInUserId = req.user ? req.user._id :    "5b01aeb1abaade1eacdc67ce";
  const decisionCode = req.params.decisionCode;
  console.log("decisionCode", decisionCode);
  console.log ('logged in userId ', currentLoggedInUserId);
  Decision.find({ decisionCode: decisionCode }).then(
    decision => {decision = Object.assign({decision},  {currentLoggedInUserId});return res.status(STATUS_OKAY).json(decision)},    //{decision = Object.assign({currentLoddgedInUserId},decision);return
    //decision =>      res.status(STATUS_OKAY).json({decision,currentLoddgedInUserId}),    //{decision = Object.assign({currentLoddgedInUserId},decision);return 
    err =>
      res
        .status(STATUS_NOT_FOUND)
        .json({ error: "Decision with code " + decisionCode + " not     found" })
  );
 });




// postman results

{
    "decision": [
        {
            "voteOver": false,
            "answers": [
                {
                    "upVotes": [],
                    "downVotes": [],
                    "_id": "5b03dcb388dc9c217ecaed19",
                    "answerText": "bla"
                }
            ],
            "createdOn": "2018-05-22T09:02:04.973Z",
            "_id": "5b03dc8c88dc9c217ecaed18",
            "decisionText": "bla",
            "decisionCode": "kefse",
            "decisionCreatorId": "5afdcaddb923ffcaa71e618c",
            "__v": 0
        }
    ],
    "currentLoggedInUserId": "5afdcaddb923ffcaa71e618c"
}

但是在反应中,这是 res.data 。我缺少 currentLoggedInUserId

这是 react 中的 componentdidMount

componentDidMount() {
    const headers = this.state.headers;
    const decisionCode = this.state.decisionCode;
    axios
      .get(`${ROOT_URL}/api/decision/${decisionCode}`, { headers })
      .then(res => {
        console.log("res", res);
        console.log('decison creator pulled from res data is '+     res.data[0].decisionCreatorId);
        console.log(res.data[0].decisionCreatorId);
        console.log(res.data[0].currentLoggedInUserId);
        // console.log("res", res);
        this.setState({
          decision: res.data[0].decisionText,
          answersArray: res.data[0].answers.map(x => x.answerText),
          decisionCreatorId: res.data[0].decisionCreatorId,
          currentLoggedInUserId: res.data.currentLoggedInUserId,
          voteOver: res.data[0].voteOver
        });

这是我在控制台上的 res.data,currentLoggedInUserId 不存在。确保它被发送的任何帮助。谢谢

data: [
    {
        answers:[{…}]
        createdOn: "2018-05-22T09:02:04.973Z"
        decisionCode : "kefse"
        decisionCreatorId : "5afdcaddb923ffcaa71e618c"
        decisionText : "bla"
        voteOver :  false
        __v :0
        _id : "5b03dc8c88dc9c217ecaed18"
    }
]

标签: javascriptnode.jsreactjsexpress

解决方案


在我看来,您没有正确使用 Object.assign:

// way it's supposed to be used - merge 2 object
console.log(Object.assign({'bfdbfdna': 'bgdndgndag'}, {'bdndnadgnda':'bfdndga'}));

// what you're doing is merging a string/int (?)
console.log(Object.assign({'bfdbfdna': 'bgdndgndag'}, {'5b03dc8c88dc9c217ecaed18'}));

文档链接:https ://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

希望有帮助。


推荐阅读