Edit Page

Populate (blueprint)

Populate and return foreign record(s) for the given association of this record.

GET /:model/:id/:association

If the specified association is plural ("collection"), this action returns the list of associated records as a JSON-encoded array of dictionaries (plain JavaScript objects). If the specified association is singular ("model"), this action returns the associated record as a JSON-encoded dictionary.

Parameter Type Details
model The identity of the containing model.

e.g. 'purchase' (in GET /purchase/47/cashier)
id The primary key of the parent record.

e.g. '47' (in GET /purchase/47/cashier)
association The name of the association.

e.g. 'cashier' (in GET /purchase/47/cashier) or 'products' (in GET /purchase/47/products)
where Instead of filtering based on a specific attribute, you may instead choose to provide a where parameter with the WHERE piece of a Waterline criteria, encoded as a JSON string. This allows you to take advantage of contains, startsWith, and other sub-attribute criteria modifiers for more powerful find() queries.

e.g. ?where={"name":{"contains":"theodore"}}
limit The maximum number of records to send back (useful for pagination). Defaults to 30.

e.g. ?limit=100
skip The number of records to skip (useful for pagination).

e.g. ?skip=30
sort The sort order. By default, returned records are sorted by primary key value in ascending order.

e.g. ?sort=lastName%20ASC
select The attributes to include in each record in the result, specified as a comma-delimited list. By default, all attributes are selected. Not valid for plural (“collection”) association attributes.

e.g. ?select=name,age.
omit The attributes to exclude from each record in the result, specified as a comma-delimited list. Cannot be used in conjuction with select. Not valid for plural (“collection”) association attributes.

e.g. ?omit=favoriteColor,address.

Example

Populate the cashier who conducted purchase #47:

`GET /purchase/47/cashier`

Run in Postman

Expected response
{
  "name": "Dolly",
  "id": 7,
  "createdAt": 1485462079725,
  "updatedAt": 1485476060873,
}

Using jQuery:

$.get('/purchase/47/cashier', function (cashier) {
  console.log(cashier);
});

Using Angular:

$http.get('/purchase/47/cashier')
.then(function (cashier) {
  console.log(cashier);
});

Using sails.io.js:

io.socket.get('/purchase/47/cashier', function (cashier) {
  console.log(cashier);
});

Using cURL:

curl http://localhost:1337/purchase/47/cashier

Populating a collection

You can also populate a collection. For example, to populate the involvedInPurchases of employee #7:

GET /employee/7/involvedInPurchases

Expected response
[
  {
    "amount": 10000,
    "createdAt": 1485476060873,
    "updatedAt": 1485476060873,
    "id": 47,
    "cashier": 7
  },
  {
    "amount": 50,
    "createdAt": 1487015460792,
    "updatedAt": 1487015476357,
    "id": 52,
    "cashier": 7
  }
]

Notes

  • In the first example above, if purchase #47 did not have a cashier (i.e. null), then this action would respond with a 404 status code.
  • The examples above assume "rest" blueprint routing is enabled (or that you've bound this blueprint action as a comparable custom route), and that your project contains at least an empty Employee model as well as a Purchase model, and that Employee has the association attribute: involvedInPurchases: {model: 'Purchase'} and that Purchase has cashier: {model: 'Employee'}. You can quickly achieve this by running:

    $ sails new foo
    $ cd foo
    $ sails generate model purchase
    $ sails generate model employee
    

    ...then editing api/models/Employee.js and api/models/Purchase.js.

Is something missing?

If you notice something we've missed or could be improved on, please follow this link and submit a pull request to the sails repo. Once we merge it, the changes will be reflected on the website the next time it is deployed.

Sails logo
  • Home
  • Get started
  • Support
  • Documentation
  • Documentation

For a better experience on sailsjs.com, update your browser.

Check out the full Sailsconf 2022 playlist on Youtube

Tweet Follow @sailsjs

Documentation

Reference Concepts App structure | Upgrading Contribution guide | Tutorials More

Reference

  • Application
    • Advanced usage
      • Lifecycle
      • sails.LOOKS_LIKE_ASSET_RX
      • sails.getActions()
      • sails.getRouteFor()
      • sails.lift()
      • sails.load()
      • sails.lower()
      • sails.registerAction()
      • sails.registerActionMiddleware()
      • sails.reloadActions()
      • sails.renderView()
      • sails.request()
      • sails.getBaseUrl()
    • sails.config.custom
    • sails.getDatastore()
    • sails.getUrlFor()
    • sails.log()
  • Blueprint API
    • add to
    • create
    • destroy
    • find one
    • find where
    • populate where
    • remove from
    • replace
    • update
  • Command-line interface
    • sails --version
    • sails console
    • sails debug
    • sails generate
    • sails inspect
    • sails lift
    • sails new
  • Configuration
    • sails.config.*
    • sails.config.blueprints
    • sails.config.bootstrap()
    • sails.config.custom
    • sails.config.datastores
    • sails.config.globals
    • sails.config.http
    • sails.config.i18n
    • sails.config.log
    • sails.config.models
    • sails.config.policies
    • sails.config.routes
    • sails.config.security
    • sails.config.session
    • sails.config.sockets
    • sails.config.views
  • Request (`req`)
    • req._startTime
    • req.body
    • req.cookies
    • req.fresh
    • req.headers
    • req.hostname
    • req.ip
    • req.ips
    • req.isSocket
    • req.method
    • req.options
    • req.originalUrl
    • req.params
    • req.path
    • req.protocol
    • req.query
    • req.secure
    • req.signedCookies
    • req.socket
    • req.subdomains
    • req.url
    • req.wantsJSON
    • req.xhr
    • req.accepts()
    • req.acceptsCharsets()
    • req.acceptsLanguages()
    • req.allParams()
    • req.file()
    • req.get()
    • req.is()
    • req.param()
    • req.setLocale()
    • req.setTimeout()
    • req.host
  • Response (`res`)
    • res.attachment()
    • res.badRequest()
    • res.clearCookie()
    • res.cookie()
    • res.forbidden()
    • res.get()
    • res.json()
    • res.jsonp()
    • res.location()
    • res.notFound()
    • res.ok()
    • res.redirect()
    • res.send()
    • res.serverError()
    • res.set()
    • res.status()
    • res.type()
    • res.view()
    • res.negotiate()
  • Waterline (ORM)
    • Datastores
      • .driver
      • .manager
      • .leaseConnection()
      • .sendNativeQuery()
      • .transaction()
    • Models
      • .addToCollection()
      • .archive()
      • .archiveOne()
      • .avg()
      • .count()
      • .create()
      • .createEach()
      • .destroy()
      • .destroyOne()
      • .find()
      • .findOne()
      • .findOrCreate()
      • .getDatastore()
      • .removeFromCollection()
      • .replaceCollection()
      • .stream()
      • .sum()
      • .update()
      • .updateOne()
      • .validate()
      • .native()
      • .query()
    • Queries
      • .catch()
      • .decrypt()
      • .exec()
      • .fetch()
      • .intercept()
      • .limit()
      • .meta()
      • .populate()
      • .skip()
      • .sort()
      • .then()
      • .tolerate()
      • .toPromise()
      • .usingConnection()
      • .where()
    • Records
      • .toJSON()
  • WebSockets
    • Resourceful PubSub
      • .getRoomName()
      • .publish()
      • .subscribe()
      • .unsubscribe()
    • sails.sockets
      • .addRoomMembersToRooms()
      • .blast()
      • .broadcast()
      • .getId()
      • .join()
      • .leave()
      • .leaveAll()
      • .removeRoomMembersFromRooms()
      • sails.sockets.id()
    • Socket client
      • io.sails
      • io.socket
      • SailsSocket
        • Methods
        • Properties
      • io.socket.delete()
      • io.socket.get()
      • io.socket.off()
      • io.socket.on()
      • io.socket.patch()
      • io.socket.post()
      • io.socket.put()
      • io.socket.request()

Built with Love

The Sails framework is built by a web & mobile shop in Austin, TX, with the help of our contributors. We created Sails in 2012 to assist us on Node.js projects. Naturally we open-sourced it. We hope it makes your life a little bit easier!

Sails:
  • What is Sails?
  • Community
  • News
  • For business
About:
  • Our company
  • Security
  • Legal
  • Logos/artwork
Help:
  • Get started
  • Documentation
  • Docs
  • Contribute
  • Take a class

© 2012-2022 The Sails Company. 
The Sails framework is free and open-source under the MIT License. 
Illustrations by Edamame.