我正在使用 AngularJS 开发一个 Parse 应用程序,并重新设计 Controller 以在发帖时指向登录的用户。在我的数据库表中,我设置了一列“作者”来指向用户。我制作了一个单独的 service.js 文件,用 Squeeg 调用它。当我点击创建时,它没有输入带有user.id的数据。没有它它也能正常工作。我该如何解决这个问题以确保用户 objectId 是数据的一部分添加到数据库中?
$scope.create=function(){
var user = Parse.User.current();
console.log(user.id);
Squeeg.create({ author:user.id, eventname:$scope.events.title, eventDescription:$scope.events.description}).success(function(data){
alert("done");
});
}
最佳答案
由于我需要 50 声望才能发表评论,因此需要在这里询问,您是否访问过 authfactory/authserverice 以从那里获取当前用户?假设您已经登录?
然后在 authFactory 中你可以有这样的东西。
app.factory('authFactory', ['$http', '$window', function ($http, $window) {
var authFactory = {};
authFactory.logIn = function (user) {
return $http.post('/login', user).success(function (data) {
authFactory.saveToken(data.token);
});
};
authFactory.saveToken = function (token) {
$window.localStorage['appToken'] = token;
};
authFactory.getToken = function () {
return $window.localStorage['appToken'];
};
authFactory.logOut = function () {
$window.localStorage.removeItem('appToken');
};
authFactory.currentUser = function () {
if(authFactory.isLoggedIn()){
var token = authFactory.getToken();
var payload = JSON.parse($window.atob(token.split('.')[1]));
return payload.username; // or return payload.id ..... / return payload
}
};
authFactory.isLoggedIn = function () {
var token = authFactory.getToken();
if(token){
var payload = JSON.parse($window.atob( token.split('.')[1]) );
return payload.exp > Date.now() / 1000;
} else {
return false;
}
};
return authFactory;
}]);
然后您只需将其与 Controller 绑定(bind)即可访问它。
app.controller('AnyCtrl', ['$scope', 'authFactory',
function ($scope, authFactory) {
$scope.currentUser = authFactory.currentUser;
}
]);
关于javascript - Parse/AngularJS - 使用用户 ID 输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32930763/