灵感来自 Gettin MEAN我正在制作自己的应用程序。我尝试在 Express 中将前端连接到后端。我复制了文本,但我的 console.log 仍然给我消息“未找到用户 ID”。我想我已经很接近完成了。感谢任何提示或有用的链接。
- 用户模型
const userSchema = new Schema({
firstName: String,
lastName: String,
userName: String,
telephone: String,
password: String
});
router
.route('/users/:userid')
.get(ctrlUsers.userReadOne);
module.exports = router;
在 Postman 中这个 get.request 有效(例如)
http://localhost:3000/api/users/5ad87da47bb05b0594fff5b6
路线:
const express = require('express');
const router = express.Router();
const ctrlUsers = require('../controllers/users');
router.get('/users/:userid', ctrlUsers.userInfo);
module.exports = router;
const request = require('request');
const apiOptions = {
server: 'http://localhost:3000'
};
if (process.env.NODE_ENV === 'production') {
apiOptions.server = 'https://pure-temple-67771.herokuapp.com';
}
/*Get myprofile */
const userInfo = function (req, res) {
const path = '/api/users/${req.params.userid}';
requestOptions = {
url: apiOptions.server + path,
method: 'GET',
json: {}
};
console.log('path ' + requestOptions.url);
request(
requestOptions,
(err, response, body) => {
_rendermyProfile(req, res, body);
console.log(body); // no userid found
});
};
const _rendermyProfile = function (req, res, userDetail) {
res.render('myProfile', {
profile: {
title: 'Mijn profiel',
firstName: userDetail.firstName,
lastName: userDetail.lastName,
email: userDetail.email,
telephone: userDetail.telephone
}
});
};
module.exports = {
userInfo
};
最佳答案
当然你会找不到用户标识,因为你误用了字符串文字。在你的 Controller 中,从这个改变:
const path = '/api/users/${req.params.userid}';
为此:
const path = `/api/users/${req.params.userid}`;
字符串文字仅在您使用反斜杠 ` 时有效。
现在您的应用应该可以正确发出请求。
关于node.js - 在 Express : userid not found 中使用 rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50029821/