响应问题与callback

我想我在这里错过了一些简单的东西,但是我认为我已经看了太久了。

我最初有你在这里看到的函数内联,但想拉出来,并在我的应用程序的其他方面使用它,但我似乎无法得到预期的信息到POST响应。

这是我的function:

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@email.com'; let a = lookUpUserId(obj); res.send(a); }); 

现在在服务器的控制台中,我得到了预期的信息:

 {_id:someIdHere } 

但是,我得到一个空的身体回应我的POST在客户端。

任何人都可以在这里指出正确的方向。

lookUpUserIdasynchronous工作。 由于您没有使用承诺,因此可以将callback作为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);