Я думаю, что мне не хватает чего-то простого здесь, но думаю, что я слишком долго смотрел на это.
Первоначально у меня было то, что вы видите здесь в функции inline, но хотели бы вытащить ее и использовать ее в других аспектах моего приложения, но я не могу представить предполагаемую информацию в ответ POST.
Здесь моя функция:
let lookUpUserId = (x) => {
mongo.connect(url, (err,db) => {
assert.equal(null,err);
db.collection('data').findOne({"email": {'$eq' : x }},{"_id":1}, (err,result) => {
console.log(result); // I'm getting the correct response here.
assert.equal(null,err);
db.close();
return result; // This seems to be returning empty
});
});
};
И вот здесь, где я называю это (упрощенный):
router.post('/test1', (req,res,next) => {
console.log('Hit on POST /test1');
let obj = '[email protected]';
let a = lookUpUserId(obj);
res.send(a);
});
Теперь в консоли сервера я получаю ожидаемую информацию:
{_id:someIdHere }
Тем не менее, я получаю пустое тело в ответ на мой POST на стороне клиента.
Может ли кто-нибудь указать мне в правильном направлении здесь.
lookUpUserId
работает асинхронно. Поскольку вы не используете обещания, вы можете передать обратный вызов в качестве второго аргумента функции lookUpUserId
:
let lookUpUserId = (x, callback) => {
mongo.connect(url, (err,db) => {
assert.equal(null,err);
db.collection('data').findOne({"email": {'$eq' : x }},{"_id":1}, (err,result) => {
console.log(result);
assert.equal(null,err);
db.close();
callback(result);
});
});
};
и назовите его:
lookUpUserId(obj, (result) => res.send(result));
или даже:
lookUpUserId(obj, res.send);
req was undefined
? Я даже не использовалreq
здесь.