Angular http post 节点服务器未将数据对象视为对象
Angular http post data object isn't being seen as an object by the node server
我在客户端使用 angular 通过用户对象对服务器执行 post。这个用户对象只是让我在一个对象中传递所有用户信息,用户名,密码,电子邮件,姓名等。而不是必须将每个作为单独的变量传递。
我在 chrome 的开发者工具中看到以下 POST 参数。
{"username":"adfasdfasdf","password":"12123123123"}
但是,在我的服务器端 js 中,数据是作为单独的变量传过来的。而不是同时具有用户名和密码的对象。因此,console.log('userData = ' + userData) 行记录了用户名。 "done" 变量包含密码。
为什么我没有在服务器端获取对象?
客户HTML
<form class="form-signin", ng-submit="register()">
<input type="text" class="form-control" placeholder="Username" ng-model="user.username">
<input type="password" class="form-control" placeholder="Password" ng-model="user.password">
</form>
客户端 JS
var pollControllers = angular.module('pollControllers', []);
pollControllers.controller('RegisterCtrl', ['$scope', '$http', '$location',
function($scope, $http, $location) {
// This object is filled by the form
$scope.user = {};
$scope.register = function() {
$http.post('http://xx.xx.xxx.xxx:3000/register', $scope.user);
}
}
]);
服务器 JS
module.exports = function(passport) {
function(userData, done) {
console.log('userData = ' + userData); // !this outputs the username!
console.log('done = ' + done); // !this outputs the password!
}
}
Passport local 获取第一个参数作为用户名,第二个参数作为密码,第三个参数作为回调。
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
我在客户端使用 angular 通过用户对象对服务器执行 post。这个用户对象只是让我在一个对象中传递所有用户信息,用户名,密码,电子邮件,姓名等。而不是必须将每个作为单独的变量传递。
我在 chrome 的开发者工具中看到以下 POST 参数。
{"username":"adfasdfasdf","password":"12123123123"}
但是,在我的服务器端 js 中,数据是作为单独的变量传过来的。而不是同时具有用户名和密码的对象。因此,console.log('userData = ' + userData) 行记录了用户名。 "done" 变量包含密码。
为什么我没有在服务器端获取对象?
客户HTML
<form class="form-signin", ng-submit="register()">
<input type="text" class="form-control" placeholder="Username" ng-model="user.username">
<input type="password" class="form-control" placeholder="Password" ng-model="user.password">
</form>
客户端 JS
var pollControllers = angular.module('pollControllers', []);
pollControllers.controller('RegisterCtrl', ['$scope', '$http', '$location',
function($scope, $http, $location) {
// This object is filled by the form
$scope.user = {};
$scope.register = function() {
$http.post('http://xx.xx.xxx.xxx:3000/register', $scope.user);
}
}
]);
服务器 JS
module.exports = function(passport) {
function(userData, done) {
console.log('userData = ' + userData); // !this outputs the username!
console.log('done = ' + done); // !this outputs the password!
}
}
Passport local 获取第一个参数作为用户名,第二个参数作为密码,第三个参数作为回调。
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.verifyPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));