所以我有一条路线,我从mongoose得到一个决定,但我也希望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
这是反应中的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"
}
]
答案 0 :(得分:0)
对我来说,你没有正确使用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'}));
Doc的链接:https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
希望有所帮助。