我让登录用户自行进行一些更改。这些更改发生在客户端代码调用的云函数中。云代码正确执行并返回,之后我查询用户表以获取更新的数据,但它返回旧数据并且缺少更新的字段。使用CDN的最新可用parse-latest.js。
我已经尝试在保存调用中发送用户会话令牌以及useMasterKey,但行为没有变化。
重现的步骤
以下是示例代码 这是对函数内部的云函数的调用。
Parse.Cloud.run("notification_update", params))
.then(function(obj) {
dfd.resolve(obj);
}, function onError(err) {
console.error(err)
dfd.reject(err);
}
云功能中的相关代码
currentUser.set("team", team);
console.log("Session token ");
console.log(currentUser.getSessionToken());
promises.push(currentUser.save(null, { sessionToken: currentUser.getSessionToken() }));
云函数返回后,我调用此函数。我在解析数据库中检查数据是否已更新。
var refresh = function onRefresh(dfd) {
console.debug("Refresh user was triggered..");
var currentUser = Parse.User.current();
var q = new Parse.Query(Parse.User);
q.include("team");
q.get(currentUser.id)
.then(function success(user) {
currentUser.set({
team: user.get("team"), //Here the data is not updated
});
if (dfd && dfd.resolve) {
dfd.resolve(currentUser);
}
}, function onError(error) {
if (dfd && dfd.reject) {
dfd.reject(error);
}
});
}
此外,当我在Chrome的“网络”标签中查看服务器的响应时,我发现用户已拥有所有更新的数据。
答案 0 :(得分:1)
为什么不对用户(我)进行查询,而不是运行完整的承诺查询来获取用户。
Parse.User.become(sessionToken).then(function(user){
//User Object is available to you here
})