Skip to content

Schema mismatch for _Session.createdWith #32

Description

@nirco123

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"}

please advice.

Activity

  1. jsoendermann commented on Jan 29, 2016

    @jsoendermann

    I get the same error.

  2. rebelchris commented on Jan 29, 2016

    @rebelchris

    Subscribing: Same here
    Edit: Using JS SDK

  3. added
    type:bugImpaired feature or lacking behavior that is likely assumed
    on Jan 29, 2016
  4. gfosco commented on Jan 29, 2016

    @gfosco
    Contributor

    Will take a look at this.

  5. hafizapp commented on Jan 29, 2016

    @hafizapp

    [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...

  6. hmoqhim commented on Jan 29, 2016

    @hmoqhim
    Contributor

    Same thing here. iOS SDK

  7. poseidonsw commented on Jan 30, 2016

    @poseidonsw

    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:

    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);
    

    finally line 70 I change:

    expiresAt: 0,
    

    to:

    expiresAt: Parse._encode(expiresAt).iso,
    
  8. natanrolnik commented on Jan 30, 2016

    @natanrolnik
    Contributor

    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.

  9. gfosco commented on Jan 30, 2016

    @gfosco
    Contributor

    Can you open the _SCHEMA collection in your mongo installation, and paste the value for the _Session object?

  10. poseidonsw commented on Jan 30, 2016

    @poseidonsw

    @gfosco this was mine right out of the migrate tool before I made the changes I posted above.

    {
    "_id" : "_Session",
    "_metadata" : {
        "class_permissions" : {
            "get" : {
                "*" : true
            },
            "find" : {
                "*" : true
            },
            "update" : {
                "*" : true
            },
            "create" : {
                "*" : true
            },
            "delete" : {
                "*" : true
            },
            "addField" : {
                "*" : true
            },
            "readUserFields" : [],
            "writeUserFields" : []
        }
    },
    "user" : "*_User",
    "installationId" : "string",
    "restricted" : "boolean",
    "expiresAt" : "date",
    "createdWith" : "map",
    "sessionToken" : "string",
    "updatedAt" : "string",
    "createdAt" : "string",
    "objectId" : "string"
    }
    
  11. gfosco commented on Jan 30, 2016

    @gfosco
    Contributor

    Merged #87 which should address all of this. Will tag a new release. 2.0.2

  12. h4rm commented on Jan 31, 2016

    @h4rm

    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.

  13. natanrolnik commented on Jan 31, 2016

    @natanrolnik
    Contributor

    @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:

    "createdWith": "object"
    

    from a map to an object.
    Also, I needed to change the expiresAt field from date to string in order for this to work.

  14. gfosco commented on Jan 31, 2016

    @gfosco
    Contributor

    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.

  15. h4rm commented on Jan 31, 2016

    @h4rm

    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.

  16. poseidonsw commented on Jan 31, 2016

    @poseidonsw

    @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

  17. jpv123 commented on Jan 31, 2016

    @jpv123

    I'm sorry, I don't understand. Was it solved on 2.0.2? I'm having also the same problem

  18. gfosco commented on Jan 31, 2016

    @gfosco
    Contributor

    Should be in 2.0.3

    On Saturday, January 30, 2016, jpv123 [email protected] wrote:

    I'm sorry, I don't understand. Was it solved on 2.0.2? I'm having also the
    same problem

    —
    Reply to this email directly or view it on GitHub
    #32 (comment)
    .

  19. hafizapp commented on Jan 31, 2016

    @hafizapp

    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

  20. natanrolnik commented on Jan 31, 2016

    @natanrolnik
    Contributor

    @hafizapp to fix that, open your schema in your mongodb, and find the _Session object. There, you should change expiresAt from date to String.

  21. gfosco commented on Jan 31, 2016

    @gfosco
    Contributor

    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 [email protected]
    wrote:

    @hafizapp https://github.com/hafizapp to fix date, open your schema in
    your mongodb, and find the _Session object. There, you should change
    expiresAt from date to String.

    —
    Reply to this email directly or view it on GitHub
    #32 (comment)
    .

  22. hafizapp commented on Jan 31, 2016

    @hafizapp

    @natanrolnik Thanks, It fixed. but it would be more helpful if we get the answer of @fraxool question.

  23. natanrolnik commented on Jan 31, 2016

    @natanrolnik
    Contributor

    @hafizapp definitely

  24. rebelchris commented on Jan 31, 2016

    @rebelchris

    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..

  25. joeyslack commented on Mar 1, 2016

    @joeyslack

    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?

  26. drew-gross commented on Mar 1, 2016

    @drew-gross
    Contributor

    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.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    type:bugImpaired feature or lacking behavior that is likely assumed

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions