recherche

Maison  >  Questions et réponses  >  le corps du texte

module.exports renvoie undefined lors d'une requête avec mongodb

Je crée un module qui enregistre les articles achetés sur MongoDB à l'aide de module.exports. C'est la première fois que j'utilise ce module.exports.

Je dois renvoyer les résultats de la requête updateOne() car j'ai besoin d'informations moddedCount sur main.js. Cependant, le résultat renvoyé n'est pas défini. J'ai lu que je devrais utiliser des rappels ou des promesses, les promesses sont meilleures. Comment puis-je faire cela dans mon cas ?

Voici mon code dans le module recordPurchase.js :

const recordPurchase = (userid, item, price) => {
    db.collection("users").updateOne({ userid: userid }, { $push: { purchases: { item: item, price: price } } })
        .then((result) => {
            if (result.modifiedCount > 0) {
                console.log("Success");
                return result; //return the updateone information
            }
        })
        .catch((err) => {
            console.log("Error recording purchase: " + err)
        })
}

module.exports = recordPurchase;

C'est ainsi que je l'appelle sur main.js

if (msg.content === "test") {
    const userid = "12345";
    const item = "Some item name";
    const price = 10;
    const result = recordPurchase(userid, item, price)
    console.log(result); //returns updateone/result information
  }

P粉957661544P粉957661544276 Il y a quelques jours361

répondre à tous(1)je répondrai

  • P粉805931281

    P粉8059312812024-02-27 18:35:34

    const recordPurchase = (userid, item, price) => {
        return new Promise((resolve, reject) => {
            db.collection("users")
                .updateOne({userid: userid}, {$push: {purchases: {item: item, price: price}}})
                .then((result) => {
                    if (result.modifiedCount > 0) {
                        resolve(result) // fulfilled
                    } else {
                        reject("error") // rejected
                    }
                })
                .catch(reject) // rejected
        })
    }
    
    module.exports = recordPurchase;

    const recordPurchase = async (userid, item, price) => {
        try{
            const result = await db.collection("users").updateOne({userid: userid}, {$push: {purchases: {item: item, price: price}}})
            if (result.modifiedCount > 0) {
                return result
            }else{
                return new Error('error')
            }
        }catch (err){
            return err
        }
    }

    répondre
    0
  • Annulerrépondre