Я новичок в 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
};





Вы можете сделать это, передав функцию обратного вызова для функции 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
})
}
createProduct. Также неясно, в чем ваш случай, у вас есть один запрос к БД, вам все равно не понадобитсяasync.parallel.