Skip to content
This repository has been archived by the owner on Apr 14, 2020. It is now read-only.

Error on Post request with GeoPoint property #14

Open
thomaslecoeur opened this issue Nov 26, 2017 · 2 comments
Open

Error on Post request with GeoPoint property #14

thomaslecoeur opened this issue Nov 26, 2017 · 2 comments

Comments

@thomaslecoeur
Copy link

Hi! Thanks for that good connector.

There's an issue on posting an instance of a model that contains a GeoPoint property. Example:

{
  "name": "string",
  "capacity": 0,
  "description": "string",
  "location": {
    "lat": 0,
    "lng": 0
  }
}

Posting this exact data parameter on the Post request results in this 500 code error:

{
  "error": {
    "statusCode": 500,
    "name": "Error",
    "message": "Cannot encode type ([object Object]) to a Firestore Value",
    "stack": "Error: Cannot encode type ([object Object]) to a Firestore Value\n    at Function.encodeValue (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/@google-cloud/firestore/src/document.js:672:11)\n    at Function.encodeFields (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/@google-cloud/firestore/src/document.js:544:36)\n    at WriteBatch.set (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/@google-cloud/firestore/src/write-batch.js:257:35)\n    at DocumentReference.set (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/@google-cloud/firestore/src/reference.js:416:8)\n    at CollectionReference.add (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/@google-cloud/firestore/src/reference.js:1830:24)\n    at Firestore.create (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-connector-firestore/lib/firestore.js:61:29)\n    at invokeConnectorMethod (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/dao.js:169:21)\n    at /Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/dao.js:472:11\n    at doNotify (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at doNotify (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:155:49)\n    at Function.ObserverMixin._notifyBaseObservers (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:178:5)\n    at Function.ObserverMixin.notifyObserversOf (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:153:8)\n    at Function.ObserverMixin._notifyBaseObservers (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:176:15)\n    at Function.ObserverMixin.notifyObserversOf (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/observer.js:153:8)"
  }
}

Another error by changing latto latitude and lng to longitude in the data parameter:

{
  "error": {
    "statusCode": 500,
    "name": "AssertionError",
    "message": "lat must be a number when creating a GeoPoint",
    "actual": false,
    "expected": true,
    "operator": "==",
    "generatedMessage": false,
    "stack": "AssertionError: lat must be a number when creating a GeoPoint\n    at new GeoPoint (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/geo.js:198:3)\n    at GeoPoint (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/geo.js:166:12)\n    at ModelConstructor.set [as location] (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model-builder.js:606:81)\n    at ModelConstructor.ModelBaseClass._initProperties (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model.js:202:17)\n    at ModelConstructor.ModelBaseClass (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model.js:60:8)\n    at ModelConstructor (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model-builder.js:196:22)\n    at ModelConstructor (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model-builder.js:196:22)\n    at new ModelConstructor (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/model-builder.js:196:22)\n    at Function.DataAccessObject.create (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-datasource-juggler/lib/dao.js:359:13)\n    at SharedMethod.invoke (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/strong-remoting/lib/shared-method.js:270:25)\n    at HttpContext.invoke (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/strong-remoting/lib/http-context.js:297:12)\n    at phaseInvoke (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/strong-remoting/lib/remote-objects.js:677:9)\n    at runHandler (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-phase/lib/phase.js:135:5)\n    at iterate (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-phase/node_modules/async/lib/async.js:146:13)\n    at Object.async.eachSeries (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-phase/node_modules/async/lib/async.js:162:9)\n    at runHandlers (/Users/thomaslecoeur/Projets/Pijam/pijam-proto-api/node_modules/loopback-phase/lib/phase.js:144:13)"
  }
}

Using "loopback-connector-firestore": "^1.0.5" and "loopback": "^3.0.0"

@marcus-gomes-v
Copy link

Could you give some more information about model, maybe i could help you
@Thomeuxe

@thomaslecoeur
Copy link
Author

There is studio.json:

{
  "name": "Studio",
  "plural": "Studios",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": true
    },
    "capacity": {
      "type": "number"
    },
    "description": {
      "type": "string"
    },
    "location": {
      "type": "geopoint"
    }
  },
  "validations": [],
  "acls": [],
  "methods": {}
}

It's a really basic model... Nothing special to tell about it.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants