gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:03:45 25 4
gpt4 key购买 nike

我有nodejs模块来使用mongodb驱动程序从mongodb数据库获取数据。回调被传递给返回 Promise 的给定函数,但不是在 .then() 函数中返回结果,而是将值传递给回调函数。由于它没有在 .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 。我对 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;
}

关于javascript - 如何在 Nodejs 中的 .then() 函数中使用回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61275091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com