如何在 Nodejs 的 .then() 函数中使用回调?

How to use callback in .then() function in Nodejs?

我有 nodejs 模块可以使用 mongodb 驱动程序从 mongodb 数据库中获取数据。回调被传递给 return 一个承诺的给定函数,但不是 return 在 .then() 函数中产生结果,而是将值传递给回调函数。我如何从其他模块或函数调用此函数,因为它不是 return 在 .then() 中调用它?我试图控制 .then() 的结果,但它显示未定义。

const MongoClient = require('mongodb').MongoClient;
const Db = require('../model/db');

Db.findUser = (details, callback) => {
    return dbconnection().then(db => {
        if (db) {
          return db.collection('users').findOne({
            email: details.email,
            pass: details.password
          }).then(data => {
            if (data) {
              console.log('Found one');
              callback(true);
            } else {
              let err = new Error();
              callback(err);
            }
          })
        }

我使用了以下函数来调用 promise。我是新手。

var getUser = function(callback) {
  db.findUser().then(result => {
    console.log(result) // undefined
  })
}

您可以使用 async/await 轻松完成。像这样:

Db.findUser = async (details, callback) => {
  const db = await dbconnection();
  const data = await db.collection('users').findOne({
    email: details.email,
    pass: details.password
  });

  if (data) {
    console.log('Found one');
    callback(true);
  } else {
    let err = new Error();
    callback(err);
  }

  return data;
}

并像这样消费它:

const getUser = async (details, callback) => {
  const data = await Db.findUser();

  // do whatever you need with data  

  return data;  
}