вернуть результат в родительскую функцию из async.parallel node.js - PullRequest
0 голосов
/ 22 сентября 2018

Я очень новичок в node.js и мне нужна помощь.Мне нужно отправить результат save () в контроллер, но он изолирован.Я не понимаю, как это сделать, сделать это правильно.Должен ли это быть обратный вызов (пытаясь понять, как это работает) или другое решение.Не могли бы вы объяснить, как решить эту проблему в конкретном случае?

Спасибо.

Метод, вызванный из контроллера:



    exports.createProduct = function (req) {

      async.parallel({
        // Search for genre existent id's sent from client
        genres: (callback) => {
          Genre.find({_id: {$in: req.body.genre}}, '_id').exec(callback);
        }
      }, (err, docs) => {
        // if (err) { throw err; }
        // Assign found genres
        req.body.genre = docs.genres;

        let product = new Product({
          title: req.body.title,
          description: req.body.description,
          images: req.body.images,
          genres: req.body.genre,
          price: req.body.price,
          status: req.body.status,
          sold: req.body.sold,
        });
        return product.save();
      });
      // return to Controller
    };

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете сделать это, передав функцию обратного вызова для функции createProduct, например:

// Product module

exports.createProduct = function (req, callback) {

    async.parallel({
    // Search for genre existent id's sent from client
    genres: (callback) => {
      Genre.find({_id: {$in: req.body.genre}}, '_id').exec(callback);
    }
  }, (err, docs) => {
    // if (err) { throw err; }
    // Assign found genres
    req.body.genre = docs.genres;

    let product = new Product({
      title: req.body.title,
      description: req.body.description,
      images: req.body.images,
      genres: req.body.genre,
      price: req.body.price,
      status: req.body.status,
      sold: req.body.sold,
    });
    product.save();

    return callback(/* You can pass any params here*/);
  });
  // return to Controller
};


/// Controller module


const product = require('./lib/product');

exports.controllerFunction = () => {
    product.createProduct(req, (params) => {
        // Called when product is created
    })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...