Настройка сгенерированных в cli сервисов feathersjs

#javascript #mongoose #feathersjs

#javascript #mongoose #feathersjs

Вопрос:

Я пишу API, чтобы попробовать featherjs с его адаптером mongoose. Я хочу, чтобы моя GET /books/ конечная точка возвращала книги только с private атрибутом, установленным в false. Должен ли я использовать хук before? Если это так, как мне запретить пользователям запускать пользовательские запросы в моей конечной точке? Должен ли я вручную очистить params объект?

Ответ №1:

Вам нужно создать, перед подключением books.hooks.js

 const books_qry = require('../../hooks/books_qry');

module.exports = {
  before: {
   all: [],
   find: [books_qry()],
   ...
  

Создать /src/hooks/books_qry.js

 module.exports = function () {
  return function (context) {
     //You have 2 choices to change the context.params.query

     //overwrite any request for a custom query
     context.params.query =  { private: false };

     //or add a query param to the request for a custom query
     context.params.query.private = false

     //check the updated context.params.query 
     console.log(context.params.query); 

     return context;
  }
}
  

Выберите один из вариантов, который вам нужен. Поскольку на данный момент я никогда не использовал mongoose, проверьте документацию, чтобы создать правильный запрос (кстати, приведенный выше пример работает для адаптера mongodb)