This is a simple lib to load data to database using sequelize.
It is intended for easily setting up test data.
Yaml and json formats are supported. Includes a grunt task.
findOrCreate is used to create records, so no record duplication when identical fixtures are defined or loaded multiple times.
Install
npm install sequelize-fixtures
Test
npm test
Usage
var sequelize_fixtures =require('sequelize-fixtures'),
You can specify associations by providing related object id or a where clause to select associated object with. Make sure associated objects are described before associations!
belongsTo
Assuming Car.belongsTo(Owner):
[
{
"model":"Owner",
"data":{
"id":11,
"name":"John Doe",
"city":"Vilnius"
}
},
{
"model":"Car",
"data":{
"id":203,
"make":"Ford",
"owner":11
}
}
]
OR
[
{
"model":"Owner",
"data":{
"name":"John Doe",
"city":"Vilnius"
}
},
{
"model":"Car",
"data":{
"make":"Ford",
"owner":{//makesureit'suniqueacrossallowners
"name":"John Doe"
}
}
}
]
hasMany
Assuming
Project.hasMany(m.Person);
Person.hasMany(m.Project);
[
{
"model":"Person",
"data":{
"id":122,
"name":"Jack",
"role":"Developer"
}
},
{
"model":"Person",
"data":{
"id":123,
"name":"John",
"role":"Analyst"
}
},
{
"model":"Project",
"data":{
"id":20,
"name":"The Great Project",
"peopleprojects":[122,123]
}
}
]
OR
[
{
"model":"Person",
"data":{
"name":"Jack",
"role":"Developer"
}
},
{
"model":"Person",
"data":{
"name":"John",
"role":"Analyst"
}
},
{
"model":"Project",
"data":{
"name":"The Great Project",
"peopleprojects":[
{
"name":"Jack"
},
{
"name":"John"
}
]
}
}
]
Build options, save optons
For each model you can provide build options that are passed to Model.build() and save options that are passed to instance.save(), example: