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
When I am trying to login using the local parse-server and migrated mongoDB (on MongoLab), I am getting the following:
{"code":111,"error":"schema mismatch for _Session.createdWith; expected map but got object"}
[Error]: schema mismatch for _Session.createdWith; expected map but got object (Code: 111, Version: 1.12.0)
Yes same here for iOS app, any one have luck to get it working...
I noticed in mongoDB in _Schema it is expecting a map when it should be an object. Must have happened in the migration tool. I changed it to object and got passed this problem. Now it seems to be complaining about expiresAt being a number when it expected a date.
Update: What worked for me in your migrated MongoDB in _SCHEMA:_session, change createdWith value to object and expiresAt value to string
then in parse-server/transform.js after line 44 ad a case for expiredAt to transform it to a iso date format for the database:
case 'expiresAt':
case '_expires_at':
key = 'expiresAt';
timeField = true;
break;
finally in parse-server/users.js prior to line 58 I created an expireDate and added a year to it:
var expiresAt = new Date();
expiresAt.setFullYear(expiresAt.getFullYear() + 1);
I've just deployed the parse server for my app in development, and when trying to login or create a new user account (iOS SDK), I'm getting the same error.
Hi Fosco,
the recent changes have not solved the problem for me. Still getting schema mismatch for _Session.createdWith; expected map but got object as a response to a login. I have upgraded to 2.0.2 on my Heroku instance using the MongoLab MongoDB as described in the migration guide.
Other GET requests for example get through as expected though.
Caught that in #87 just now (should allow it to stay as "map" in the schema)... can you try the current master? This doesn't change anything with 'expiresAt', still need more info on the best way to fix that if still a problem.
Yes, I already tested it with the current master (2.0.2).
Doing the changes to _SCHEMA:_session (change createdWith value to object and expiresAt value to string) worked however.
@gfosco I can clean up my change for expiresAt and send it as a PR. It sets the expiresAt a year in advance similar to what parse.com api does. You do still need to change it in the _SCHEMA:_Session from date to string, but that would make it consistent with the other dates in the _SCHEMA collection
Sure, but I'd recommend you try that on a dev DB before doing it in your prod DB. Can you also open a new issue describing how you got into this situation? (Was this a migrated DB, or a new one? Does your app use revocable sessions? etc.)
Activity
jsoendermann commentedon Jan 29, 2016
I get the same error.
rebelchris commentedon Jan 29, 2016
Subscribing: Same here
Edit: Using JS SDK
gfosco commentedon Jan 29, 2016
Will take a look at this.
hafizapp commentedon Jan 29, 2016
[Error]: schema mismatch for _Session.createdWith; expected map but got object (Code: 111, Version: 1.12.0)
Yes same here for iOS app, any one have luck to get it working...
hmoqhim commentedon Jan 29, 2016
Same thing here. iOS SDK
poseidonsw commentedon Jan 30, 2016
I'm getting the same error using the JS SDK
I noticed in mongoDB in _Schema it is expecting a map when it should be an object. Must have happened in the migration tool. I changed it to object and got passed this problem. Now it seems to be complaining about expiresAt being a number when it expected a date.
Update: What worked for me in your migrated MongoDB in _SCHEMA:_session, change createdWith value to object and expiresAt value to string
then in parse-server/transform.js after line 44 ad a case for expiredAt to transform it to a iso date format for the database:
finally in parse-server/users.js prior to line 58 I created an expireDate and added a year to it:
finally line 70 I change:
to:
natanrolnik commentedon Jan 30, 2016
I've just deployed the parse server for my app in development, and when trying to login or create a new user account (iOS SDK), I'm getting the same error.
gfosco commentedon Jan 30, 2016
Can you open the _SCHEMA collection in your mongo installation, and paste the value for the _Session object?
poseidonsw commentedon Jan 30, 2016
@gfosco this was mine right out of the migrate tool before I made the changes I posted above.
gfosco commentedon Jan 30, 2016
Merged #87 which should address all of this. Will tag a new release. 2.0.2
h4rm commentedon Jan 31, 2016
Hi Fosco,
the recent changes have not solved the problem for me. Still getting
schema mismatch for _Session.createdWith; expected map but got objectas a response to a login. I have upgraded to 2.0.2 on my Heroku instance using the MongoLab MongoDB as described in the migration guide.Other GET requests for example get through as expected though.
natanrolnik commentedon Jan 31, 2016
@vection take a look at @poseidonsw first comment. There may be a bug in the migration tool, and in the _Session schema you need to change:
from a
mapto anobject.Also, I needed to change the
expiresAtfield fromdatetostringin order for this to work.gfosco commentedon Jan 31, 2016
Caught that in #87 just now (should allow it to stay as "map" in the schema)... can you try the current master? This doesn't change anything with 'expiresAt', still need more info on the best way to fix that if still a problem.
h4rm commentedon Jan 31, 2016
Yes, I already tested it with the current master (2.0.2).
Doing the changes to _SCHEMA:_session (change
createdWithvalue toobjectandexpiresAtvalue tostring) worked however.poseidonsw commentedon Jan 31, 2016
@gfosco I can clean up my change for expiresAt and send it as a PR. It sets the expiresAt a year in advance similar to what parse.com api does. You do still need to change it in the _SCHEMA:_Session from date to string, but that would make it consistent with the other dates in the _SCHEMA collection
jpv123 commentedon Jan 31, 2016
I'm sorry, I don't understand. Was it solved on 2.0.2? I'm having also the same problem
gfosco commentedon Jan 31, 2016
Should be in 2.0.3
On Saturday, January 30, 2016, jpv123 notifications@github.com wrote:
hafizapp commentedon Jan 31, 2016
Till now it's same thing, please fix ..
[Error]: schema mismatch for _Session.expiresAt; expected date but got string (Code: 111, Version: 1.12.0)
@gfosco
natanrolnik commentedon Jan 31, 2016
@hafizapp to fix that, open your schema in your mongodb, and find the
_Sessionobject. There, you should change expiresAt fromdatetoString.gfosco commentedon Jan 31, 2016
Yeah, that will fix it, but we do need to add something in parse-server to
handle this scenario cleanly without having to edit the schema.
On Sun, Jan 31, 2016 at 12:52 AM, Natan Rolnik notifications@github.com
wrote:
hafizapp commentedon Jan 31, 2016
@natanrolnik Thanks, It fixed. but it would be more helpful if we get the answer of @fraxool question.
natanrolnik commentedon Jan 31, 2016
@hafizapp definitely
rebelchris commentedon Jan 31, 2016
I did change to 2.0.3 and changed expiresAt from date to string
It seems to work, but the js sdk gives me the following error:
Uncaught Error: Tried to encode an unsaved file.
File parse-1.6.7.min.js:9164
I'm guessing it has something to do with this issue? since it was working before..
joeyslack commentedon Mar 1, 2016
I'm getting issues with expiredAt. Is it still valid for me to change my schema, to convert expiresAt from Date type (iso) to String?
drew-gross commentedon Mar 1, 2016
Sure, but I'd recommend you try that on a dev DB before doing it in your prod DB. Can you also open a new issue describing how you got into this situation? (Was this a migrated DB, or a new one? Does your app use revocable sessions? etc.)