Supose the following case (schemas), where a company holds the reference of the owner, which is an entrepreneur.
Entrepreneur.js
{
niceName: String,
birth: Date,
}Company.js
{
niceName: String,
owner: {type: ObjectId, ref: 'Entrepreneur'},
employees: Number,
location: String
}Supose that the following entries are added into the database:
Entrepreneur
{
"_id": "5706768af830c3fe1022c2fd",
"birth": "2016-04-07T15:00:00.000Z",
"niceName": "Antonio"
}Company Yulpan
{
"_id": "570676d298e5e50f11804011",
"niceName": "Yulpan",
"owner": "5706768af830c3fe1022c2fd",
"employees": 2,
"location": "Spain"
}Company Stainstan
{
"_id": "570cfe5972c7f91232f9fde7",
"niceName": "Stainstan",
"owner": "5706768af830c3fe1022c2fd",
"employees": 12,
"location": "Belgium"
}The typebased generation will produce three new endpoints that will be like the followings:
- GET /company/:company_id/owner
Result: This returns the owner of the company which is resolved from the id.
{
niceName: String,
birth: Date
}Example: GET /company/570676d298e5e50f11804011/owner
{
"_id": "5706768af830c3fe1022c2fd",
"birth": "2016-04-07T15:00:00.000Z",
"niceName": "Antonio"
}- GET /user/:user_id/companies/owner
Result:
{
"status": {
"count": # Number of total in database,
"search_count": # Number in this result
},
"result": [
{
niceName: String,
owner: {type: ObjectId, ref: 'Entrepreneur'},
employees: Number
}
]
}Example: GET /user/5706768af830c3fe1022c2fd/companies/owner
{
"status": {
"count": 2,
"search_count": 2
},
"result": [{
"_id": "570676d298e5e50f11804011",
"niceName": "Yulpan",
"owner": "5706768af830c3fe1022c2fd",
"employees": 2,
"location": "Spain"
},
{
"_id": "570cfe5972c7f91232f9fde7",
"niceName": "Stainstan",
"owner": "5706768af830c3fe1022c2fd",
"employees": 12,
"location": "Belgium"
}]
}- POST /user/:user_id/companies/owner
Body:
{
"query": {
}
}Result:
{
"status": {
"count": # Number of total in database,
"search_count": # Number in this result
},
"result": [
{
niceName: String,
owner: {type: ObjectId, ref: 'Entrepreneur'},
employees: Number
}
]
}Examples body:
{
"query": {
"niceName": {
"$regex": "spa",
"$options": "i"
}
},
"limit": 20,
"skip": 0
}Examples result:
{
"status": {
"count": 2,
"search_count": 1
},
"result": [{
"_id": "570676d298e5e50f11804011",
"niceName": "Yulpan",
"owner": "5706768af830c3fe1022c2fd",
"employees": 2,
"location": "Spain"
}]
}