Neverending Pile of Messages

    feathers-populate-hook

    0.5.3 • Public • Published

    feathers-populate-hook

    NPM

    Feathers hook to populate multiple fields with one to many, many to one and many to many relations. (For m:m cascade the populate hooks on a linking service.)

    Installation:

    npm install feathers-populate-hook
    

    Example setup:

     const populate = require('feathers-populate-hook');
     
     messageService.before({
       all: [
         populate.compatibility()
       ]
     });
     
     messageService.after({
       find: [
         populate({
           user: { // Destination key
             service: 'users', // Foreign service
             f_key: 'id',  // Foreign key
             one: true // Optional, if only one resolve object is wanted
           },
           comments: { // Destination key
             service: 'comments', // Foreign service
             f_key: 'message',  // Foreign key
             l_key: 'id',  // Local key
            },
           resolvedCategories: { // Destination key
             service: 'categories', // Foreign service
             f_key: 'id',  // Foreign key
             l_key: 'categories' // Local key, optional, if different then destination key
           },
            creator: { // Destination key
              service: 'users', // Foreign service
              f_key: 'email',  // Foreign key
              l_key: 'createdByEmail',
              one: true,
              query:  {  // defaults to {} but you can specify any other options here
                $select: ['name','profile_image']
              }
            }
         },
         { // defaults query/params
           query: {
             $foo: true
           },
           params: {
             $bar: true
           } 
         })
       ]
     })

    Query options

    Set query defaults for the internal service call, i.e. $select, $order

    Block some populates from the client: set query.$populate to {dontPopulateField: 0}

    Block all populates: set query.$populate to false or 0

    You can also use $populate as a param.

    Remove populate.compatibility() hook to disallow the query to modify the behaviour.

    Disable populate by default

    If you want the default behaviour to be false add a custom hook:

    function(hook) {
      hook.params.$populate = !!hook.params.query.$populate;
      delete hook.params.query.$populate;
      return hook;
    };
    

    Install

    npm i feathers-populate-hook

    DownloadsWeekly Downloads

    37

    Version

    0.5.3

    License

    MIT

    Unpacked Size

    9.48 kB

    Total Files

    5

    Last publish

    Collaborators

    • michaelermer