#javascript #node.js #express
#javascript #node.js #выразить
Вопрос:
Я дал обещание node.js
и пытаюсь использовать его в контроллере. Но он выдал ошибку, которая 'not a function'
. И вызов promises без маленькой скобки выдал ошибку 'Can't call then on undefined'
.
Код обещания:
const Subscription = require("../models/subscription");
exports.pickRandomSubscription = new Promise(function(resolve, reject) {
let pickedSubscription = '';
Subscription.find({}, function(err, subscriptions) {
subscriptions.forEach(function(item) {
pickedSubscription = item; //get last subscription
});
if (pickedSubscription) resolve(pickedSubscription);
else reject("Subscription not found");
});
})
Вызов promise:
const { pickedRandomSubscription } = require("../algo/pickSubscription");
let pickedSubscription = '';
pickedRandomSubscription().then(res => pickedSubscription = res).catch(console.log)
Ответ №1:
Вы экспортируете обещание напрямую, а не функцию. Вы, вероятно, хотели это сделать:
exports.pickRandomSubscription = () => new Promise(function(resolve,reject) { ... }
Комментарии:
1. это не сработало @eol. опять та же ошибка «не является функцией».
2. Покажите нам, как вы импортируете
pickRandomSubscription
.
Ответ №2:
Вы импортировали неправильное имя обещания: pickedRandomSubscription
const { pickedRandomSubscription } = require("../algo/pickSubscription");
Вы должны исправить это на: pickRandomSubscription
(нет ed
)
const { pickRandomSubscription } = require("../algo/pickSubscription");