balderdashy / balderdashy/sails

One-to-many create parent + childs fails

Open
#6,907 4 comments 0 reactions 0 assignees View on GitHub
does this answer your question? mysql orm question
Dominant language
JavaScript
Stars
22.8k
Forks
1.9k
PR merge metrics
No merged PRs in 30d

Description

**Node version**: v12.13.0
**Sails version** _(sails)_: 1.2.3
**DB adapter & version** : sails-mysql@5.7.23-cll-lve


**I have a model User (Parent):**

```
/**
* User.js
*
* @description :: A model definition represents a database table/collection.
* @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
*/

module.exports = {
attributes: {
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},

// Add a reference to Pets
pets: {
collection: 'pet',
via: 'owner'
}
}
};

```
**And Model Pet (Child):**

```
/**
* Pet.js
*
* @description :: A model definition represents a database table/collection.
* @docs :: https://sailsjs.com/docs/concepts/models-and-orm/models
*/

module.exports = {
attributes: {
breed: {
type: 'string'
},
type: {
type: 'string'
},
name: {
type: 'string'
},

// Add a reference to User
owner: {
model: 'user'
}
}
};

```
**Find/FindAll populating works fine, but when I try to create a header (User) and details (Pet) an error appears.**

```
**POST: http://localhost:1337/User **
{
"firstName": "Luis",
"lastName": "Reyes",
"pets": [
{
"breed": "labrador",
"type": "dog",
"name": "Princesa"
},
{
"breed": "labrador",
"type": "dog",
"name": "Luna"
}
]
}

```

**This is the error that returns:**

```
UsageError: Invalid criteria.
Details:
Could not use the provided `where` clause. Could not filter by `id`: Invalid item within `in` modifier array. Does not
match the declared data type of the corresponding attribute. 1 error validating value:
• Specified value (a dictionary: { breed: 'labrador', type: 'dog', name: 'Princesa' }) doesn't match the expected type:
'number'

at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\lib\hooks\blueprints\actions\create.js:53:45
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2489:9
at replenish (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:946:17)
at iterateeCallback (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:931:17)
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:906:16
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2491:13
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\lib\hooks\blueprints\actions\create.js:71:14
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2489:9
at replenish (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:946:17)
at iterateeCallback (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:931:17)
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:906:16
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2491:13
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\lib\hooks\blueprints\actions\create.js:71:14
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2489:9
at replenish (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:946:17)
at iterateeCallback (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:931:17)
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:906:16
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2491:13
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\lib\hooks\blueprints\actions\create.js:71:14
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2489:9
at replenish (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:946:17)
at iterateeCallback (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:931:17)
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:906:16
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2491:13
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\lib\hooks\blueprints\actions\create.js:71:14
at D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:2489:9
at replenish (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:946:17)
at iterateeCallback (D:\2.- Desarrollo\poc\backend\apierp\node_modules\sails\node_modules\async\dist\async.js:931:17)
```

Contributor guide

Open the contributing guide

Research direction

Reproduce the POST to /User using the User.js and Pet.js association definitions, then trace the failure through node_modules/sails/lib/hooks/blueprints/actions/create.js. Compare the submitted pets values with the association criteria handling; done means creating a User with both Pets succeeds and the relationship can be retrieved with populate.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, mysql, node.js
Domain
api, backend, database
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.