You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If I removed "{ sessionToken: token }", I run into the error "code: 206 error: cannot modify user..." which is the same as issue #1729.
Steps to reproduce
1.Implement a Cloud function like the below:
Parse.Cloud.define("saveUserCardProperty", function (request, response) {
var user = request.user;
if (user) {
// some logic to get new value
// ....
var userToken = user.getSessionToken();
user.set("customerCardId", newValue);
user.save({ sessionToken: userToken }).then(function(user) {
console.log("Successfully saved card id .");
response.success(user);
}, function(error) {
response.error("Failed to save the card info to profile.");
});
}, function(error) {
response.error("Failed to save the card info.");
});
}
else {
response.error("No user was set in request.");
}
})
Call the function from client side.
Expected Results
Expected the code should update the user object with the new value
Actual Outcome
parse-server_1 | Unhandled rejection Error: Cannot modify readonly attribute: sessionToken
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:733:17)
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:1205:14)
parse-server_1 | at ParseUser._ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseUser.js:566:132)
parse-server_1 | at /parse/cloud/main.js:582:22
parse-server_1 | at tryCatcher (/parse/node_modules/bluebird/js/main/util.js:26:23)
parse-server_1 | at Promise._settlePromiseFromHandler (/parse/node_modules/bluebird/js/main/promise.js:510:31)
parse-server_1 | at Promise._settlePromiseAt (/parse/node_modules/bluebird/js/main/promise.js:584:18)
parse-server_1 | at Promise._settlePromises (/parse/node_modules/bluebird/js/main/promise.js:700:14)
parse-server_1 | at Async._drainQueue (/parse/node_modules/bluebird/js/main/async.js:123:16)
parse-server_1 | at Async._drainQueues (/parse/node_modules/bluebird/js/main/async.js:133:10)
parse-server_1 | at Immediate.Async.drainQueues [as _onImmediate] (/parse/node_modules/bluebird/js/main/async.js:15:14)
parse-server_1 | at tryOnImmediate (timers.js:534:15)
parse-server_1 | at processImmediate [as _immediateCallback] (timers.js:514:5)
Environment Setup
Server
parse-server version (Be specific! Don't say 'latest'.) : 2.2.22
Operating System: Ubuntu 14.04
Hardware: Azure VM D1_v2
Localhost or remote server? (AWS, Heroku, Azure, Digital Ocean, etc): Azure VM
Database
MongoDB version: 3.2.8
Storage engine: wiredTiger
Hardware: Azure VM D1_v2
Localhost or remote server? (AWS, mLab, ObjectRocket, Digital Ocean, etc): Azure VM
Logs/Trace
You can turn on additional logging by configuring VERBOSE=1 in your environment.
parse-server_1 | Unhandled rejection Error: Cannot modify readonly attribute: sessionToken
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:733:17)
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:1205:14)
parse-server_1 | at ParseUser._ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseUser.js:566:132)
parse-server_1 | at /parse/cloud/main.js:582:22
parse-server_1 | at tryCatcher (/parse/node_modules/bluebird/js/main/util.js:26:23)
parse-server_1 | at Promise._settlePromiseFromHandler (/parse/node_modules/bluebird/js/main/promise.js:510:31)
parse-server_1 | at Promise._settlePromiseAt (/parse/node_modules/bluebird/js/main/promise.js:584:18)
parse-server_1 | at Promise._settlePromises (/parse/node_modules/bluebird/js/main/promise.js:700:14)
parse-server_1 | at Async._drainQueue (/parse/node_modules/bluebird/js/main/async.js:123:16)
parse-server_1 | at Async._drainQueues (/parse/node_modules/bluebird/js/main/async.js:133:10)
parse-server_1 | at Immediate.Async.drainQueues [as _onImmediate] (/parse/node_modules/bluebird/js/main/async.js:15:14)
parse-server_1 | at tryOnImmediate (timers.js:534:15)
parse-server_1 | at processImmediate [as _immediateCallback] (timers.js:514:5)
The text was updated successfully, but these errors were encountered:
You should pass the options object with the sessionToken as the second parameter of the save method. The first parameter of the save() method is actually to set properties on the object without calling .set("foo", "bar").
So in your case, you should call .save(null, {sessionToken: userToken})
Describe your issue in as much detail as possible.
I have a Cloud function to update user object property. It worked in hosted parse. While I am migrating it to parse server, I followed the guidance (https://github.com/ParsePlatform/parse-server/wiki/Compatibility-with-Hosted-Parse) to pass sessionToken to save(). However, the server code thrown "Error: Cannot modify readonly attribute: sessionToken".
If I removed "{ sessionToken: token }", I run into the error "code: 206 error: cannot modify user..." which is the same as issue #1729.
Steps to reproduce
1.Implement a Cloud function like the below:
Parse.Cloud.define("saveUserCardProperty", function (request, response) {
var user = request.user;
if (user) {
// some logic to get new value
// ....
var userToken = user.getSessionToken();
user.set("customerCardId", newValue);
user.save({ sessionToken: userToken }).then(function(user) {
console.log("Successfully saved card id .");
response.success(user);
}, function(error) {
response.error("Failed to save the card info to profile.");
});
}, function(error) {
response.error("Failed to save the card info.");
});
}
else {
response.error("No user was set in request.");
}
})
Expected Results
Expected the code should update the user object with the new value
Actual Outcome
parse-server_1 | Unhandled rejection Error: Cannot modify readonly attribute: sessionToken
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:733:17)
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:1205:14)
parse-server_1 | at ParseUser._ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseUser.js:566:132)
parse-server_1 | at /parse/cloud/main.js:582:22
parse-server_1 | at tryCatcher (/parse/node_modules/bluebird/js/main/util.js:26:23)
parse-server_1 | at Promise._settlePromiseFromHandler (/parse/node_modules/bluebird/js/main/promise.js:510:31)
parse-server_1 | at Promise._settlePromiseAt (/parse/node_modules/bluebird/js/main/promise.js:584:18)
parse-server_1 | at Promise._settlePromises (/parse/node_modules/bluebird/js/main/promise.js:700:14)
parse-server_1 | at Async._drainQueue (/parse/node_modules/bluebird/js/main/async.js:123:16)
parse-server_1 | at Async._drainQueues (/parse/node_modules/bluebird/js/main/async.js:133:10)
parse-server_1 | at Immediate.Async.drainQueues [as _onImmediate] (/parse/node_modules/bluebird/js/main/async.js:15:14)
parse-server_1 | at tryOnImmediate (timers.js:534:15)
parse-server_1 | at processImmediate [as _immediateCallback] (timers.js:514:5)
Environment Setup
Server
Database
Logs/Trace
You can turn on additional logging by configuring VERBOSE=1 in your environment.
parse-server_1 | Unhandled rejection Error: Cannot modify readonly attribute: sessionToken
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:733:17)
parse-server_1 | at ParseUser.ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseObject.js:1205:14)
parse-server_1 | at ParseUser._ParseObject.value (/parse/node_modules/parse-server/node_modules/parse/lib/node/ParseUser.js:566:132)
parse-server_1 | at /parse/cloud/main.js:582:22
parse-server_1 | at tryCatcher (/parse/node_modules/bluebird/js/main/util.js:26:23)
parse-server_1 | at Promise._settlePromiseFromHandler (/parse/node_modules/bluebird/js/main/promise.js:510:31)
parse-server_1 | at Promise._settlePromiseAt (/parse/node_modules/bluebird/js/main/promise.js:584:18)
parse-server_1 | at Promise._settlePromises (/parse/node_modules/bluebird/js/main/promise.js:700:14)
parse-server_1 | at Async._drainQueue (/parse/node_modules/bluebird/js/main/async.js:123:16)
parse-server_1 | at Async._drainQueues (/parse/node_modules/bluebird/js/main/async.js:133:10)
parse-server_1 | at Immediate.Async.drainQueues [as _onImmediate] (/parse/node_modules/bluebird/js/main/async.js:15:14)
parse-server_1 | at tryOnImmediate (timers.js:534:15)
parse-server_1 | at processImmediate [as _immediateCallback] (timers.js:514:5)
The text was updated successfully, but these errors were encountered: