我試圖從運行在Heroku上的node.js應用程序更新我的Parse數據庫中的PFUser。我從iOS應用程序調用Parse雲功能。UserCannotBeAlteredWithoutSessionError當從Heroku node.js解析更新PFUser應用程序
下面是我用它來更新分析用戶代碼的一部分,以及創造對條紋的用戶(條形部分工作正常):
Parse.Cloud.define("createCustomerWithCreditCardToken", function(request, response) {
var userId = request.user.id;
var sourceId = request.params.creditCardToken;
var customerId;
var userSessionToken = request.user.getSessionToken();
console.log('userId: ' + userId + ' source: ' + sourceId + ' userSessionToken: ' + userSessionToken);
stripe.customers.create({
source: sourceId,
description: userId
}, function(error, customer) {
if (error !== null) {
response.error('error creating customer: ' + error);
}else {
var userQuery = new Parse.Query('User');
userQuery.equalTo('objectId', userId);
userQuery.first({sessionToken: userSessionToken}).then(function(user) {
console.log('user from parse query: ' + user.get("username"));
user.set("stripeCustomerId", customer.id);
user.save(null, {
success: function(parseCustomer) {
console.log('customer saved to parse: ' + parseCustomer);
},
error: function(error, parseCustomer) {
console.log('customer save failed: ' + JSON.stringify(error, null, 2) + ' with error: ' + JSON.stringify(parseCustomer,null, 2));
}
});
});
customerId = customer.id;
console.log('customerId: '+ customerId);
// response.success(customer);
response.success('Customer: ' + JSON.stringify(customer, null, 2) + 'error: ' + error);
}
});
});
我碰到下面的錯誤日誌輸出,當我運行此: error log output
error: { "code": 206, "message": "Parse::UserCannotBeAlteredWithoutSessionError" }
在這種post在node.js的應用程序上下文的當前用戶的概念是由一個Parse工程師討論。
此外,在雲代碼,返回當前 用戶的方法的概念是有意義的,因爲它在JavaScript並在網頁上,因爲 只有一個活動的請求,只有一個用戶。但是,在像node.js這樣的 上下文中,不能有全局當前用戶,其中 需要顯式傳遞會話令牌。
本質,他建議要做到這一點:
Parse.Cloud.define('findBacon', function(req, res) {
var token = req.user.getSessionToken();
var query = new Parse.Query('Bacon');
// Pass the session token to the query
query.find({ sessionToken: token }).then(...);
});
我也用{useMasterKey:true}
代替{sessionToken:userSessionToken}
產生同樣的錯誤嘗試。
我可能會錯過一些明顯的細節,但我似乎無法找到它。任何關於如何解決這個問題的想法都非常感謝。