Сообщение об ошибке FeatherJS: вызов populate (target, options) теперь УСТАРЕЛ - PullRequest
0 голосов
/ 30 мая 2018

Я использую инфраструктуру Feathers JS и библиотеку mongoose для создания веб-сервисов, но когда я хочу запустить свой проект, я получаю следующее сообщение об ошибке:

 Mongoose option.lean is false. Use hook.results.toObject() to convert the results to JS objects
Calling populate(target, options) is now DEPRECATED and will be removed in the future

код:

  var mongooseService = require('feathers-mongoose');

 app.use('user', mongooseService({
     name: 'user',
     Model: require('./../models/user'),
     id: 'cuid'
   }))

   .use('post', mongooseService({
     name: 'post',
     Model: require('./../models/post'),
   }))

 var getLastPost = function() {
   return app.service('post').find({
     query: {
       "status": {
         $in: [0, 1, 2]
       },
       $select: ['version', '_id']
     }
   });
 };
 app.service('post')
   .before(getLastPost)
   .after(hooks.populate('user', {
     service: 'user'
   }))

Есть ли что-то, что я должен сделать, чтобы удалить эти сообщения об ошибках?

Ответы [ 2 ]

0 голосов
/ 30 мая 2018

чтобы исправить второе сообщение об ошибке:

 var auk = require('feathers-hooks-common');
   var populate = function(serviceName,name,parentFieldName,childFieldName){
   return auk.populate({
      schema: {
      include: {
        service: serviceName,
        nameAs: name,
        parentField: parentFieldName,
        childField: childFieldName
      }
    }
  })
  }
  app.service('post').hooks({
    after: {all: populate("user","user","user","_id")}
  });
0 голосов
/ 30 мая 2018

Необходимо добавить свойство lean при определении службы.

 var mongooseService = require('feathers-mongoose');

 app.use('user', mongooseService({
     "name": 'user',
     "Model": require('./../models/user'),
     "id": 'cuid',
     "lean": true
   }))

   .use('post', mongooseService({
     "name": 'post',
     "Model": require('./../models/post'),
     "lean": true
   }))

 var getLastPost = function() {
   return app.service('post').find({
     query: {
       "status": {
         $in: [0, 1, 2]
       },
       $select: ['version', '_id']
     }
   });
 };
 app.service('post')
   .before(getLastPost)
   .after(hooks.populate('user', {
     create: function(hook, next) {
        hook.result = hook.result.toObject();
        next();
     },
     service: 'user'
   }))
...