1

I am looking into what is wrong with my schema. I'm attempting to insert an entry into my collection and I have gotten a slew of errors as I've changed things around but this seems to be the closest I have gotten to successfully inserting a document. I am using the mongodb-stitch-browser-sdk in a React Ionic project and I have a valid user logged in.

I am using the StitchUser.id which is a string as my owner_id (matches the id of my valid user in users collection).

Here is my schema followed by the error in Stitch logs. I was simply trying to insert a document to my Goals table. Also, there are no filters on this collection and there is only one role with the following rule.

{
  "owner_id": "%%user.id"
}

This gives the user read and write permissions on the collection's that they created.

{
  "bsonType": "object",
  "required": [
    "goalTitle",
    "startDate",
    "endDate",
    "owner_id"
  ],
  "properties": {
    "_id": {
      "bsonType": "objectId"
    },
    "owner_id": {
      "bsonType": "string",
      "validate": {
        "%or": [
          {
            "%%prevRoot.owner_id": {
              "%exists": false
            }
          },
          {
            "%%prevRoot.owner_id": "%%this"
          }
        ]
      }
    },
    "goalTitle": {
      "bsonType": "string",
      "minLength": {
        "$numberInt": "1"
      },
      "maxLength": {
        "$numberInt": "30"
      }
    },
    "goalDescription": {
      "bsonType": "string",
      "minLength": {
        "$numberInt": "0"
      },
      "maxLength": {
        "$numberInt": "600"
      }
    },
    "startDate": {
      "bsonType": "string"
    },
    "endDate": {
      "bsonType": "string"
    }
  }
}
Error:
role "owner" in "todo_list.Goals" does not have insert permission for document with _id: ObjectID("5e6aa8d11d233536e3ea8604"): could not validate document: 
    owner_id: Does not pass validation
Stack Trace:
StitchError: insert not permitted
Details:
{
  "serviceAction": "insertOne",
  "serviceName": "mongodb-atlas",
  "serviceType": "mongodb-atlas"
}
{
  "arguments": [
    {
      "collection": "Goals",
      "database": "todo_list",
      "document": {
        "goalTitle": "Test Goal",
        "goalDescription": "Test Description",
        "endDate": "2020-03-11",
        "startDate": "2020-03-10",
        "owner_id": "5e6891382e6039c1c32f7d46",
        "_id": {
          "$oid": "5e6aa8d11d233536e3ea8604"
        }
      }
    }
  ],
  "name": "insertOne",
  "service": "mongodb-atlas"
}

I've created another collection with no schema and the same rule checking for owner_id and documents in that collection are able to be inserted just fine. I'd have to imagine it is a schema error.

halfer
  • 19,824
  • 17
  • 99
  • 186
UCProgrammer
  • 517
  • 7
  • 21

0 Answers0