我的網路應用程式中有一條路由,我試圖通過路由引數傳遞用戶名。這是我的script.js附件index.html:
$scope.del_movie = function(movie) {
$http( {
method: 'DELETE',
url: '/movie/:title/:username',
params: {'title': movie.title, 'username': movie.username}
}).then(function successCallback(response) {
console.log(response);
return getData();
}, function errorCallback(response) {
console.log('Error: ' response);
});
};
我設定的路線server.js如下所示:
app.delete('/movie/:title/:username', requiresAuth(), function(req, res) {
paramsUsernameString = req.params.username;
oidcEmailString = JSON.stringify(req.oidc.user.email);
console.log("movie " req.params.username);
if(paramsUsernameString != oidcEmailString){
console.log("req.params.username " paramsUsernameString " req.oidc.user.username " oidcEmailString);
console.log("can't delete someone else's review!");
res.json({
message: "You can't delete someone else's review, as much as you may like to"
});
}
else{
Movie.findOneAndRemove(req.query, function(err, result) {
if ( err ) throw err;
res.json( {
message: "req.params.username " paramsUsernameString " req.oidc.user.username " oidcEmailString,
movie: result
});
});
}
});
問題是,當我 console.log req.params.username 時,它??不會作為我通過 del_movie 傳入的用戶名出現。它顯示為“:用戶名”。我查找了快速路由,但我對自己做錯了什么感到困惑;我的路線看起來像所有的例子,除非我遺漏了一些明顯的東西。
我需要express、bodyParser、 和express-openid-connect,以及 中的我的電影模式model.js,它有一個用戶名和一個標題。
感謝您提供任何答案,并很高興在需要時提供更多資訊/背景!
uj5u.com熱心網友回復:
根據https://docs.angularjs.org/api/ng/service/$http
params – {Object.<string|Object>} – 將使用 paramSerializer 序列化并附加為 GET 引數的字串或物件的映射。
這意味著您的網址現在變為:
`/movie/:title/:username?title=${movie.title}&username=${movie.username}`
因此,在您的服務器req.params.username上,硬編碼":username".
如果您不想修改路線,那么應該是req.query.username您想要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/364407.html
