Вы не возвращаете обещание от функции контроллера. Вы просто возвращаете result
и error
Итак, вместо этого вы должны вернуть обещание внутри функции контроллера
Route.js
const controller = require('./user-product')
router.post('/api', function (req, res, next) {
var p1 = controller(req, res, next, userID, product)
var allDone = Promise.all([p1])
allDone.then(function (e) {
res.send(e)
})
.catch(function (e) {
console.log(e);
})
})
controller.js
var x = (req, res, next, userID, product) => {
let query = { uid: userID }
let update = { $push: { product: product }}
let options = {
safe: true,
new: true,
upsert: true
}
return Model.findOneAndUpdate(query, update, options).exec()
}
module.exports = x;
И, возможно, проще с асинхронным ожиданием синтаксис
Route.js
const controller = require('./user-product')
router.post('/api', async(req, res, next) => {
try {
const p1 = await controller(req, res, next, userID, product)
console.log(p1)
} catch (err) {
console.log(err)
}
})
controller.js
var x = async(req, res, next, userID, product) => {
let query = { uid: userID }
let update = { $push: { product: product }}
let options = {
safe: true,
new: true,
upsert: true
}
return Model.findOneAndUpdate(query, update, options).exec()
}
module.exports = x;