Heim  >  Fragen und Antworten  >  Hauptteil

module.exports gibt bei Abfragen mit mongodb undefiniert zurück

Ich erstelle mithilfe von module.exports ein Modul, das gekaufte Artikel in MongoDB aufzeichnet. Dies ist das erste Mal, dass ich dieses module.exports verwende.

Ich muss die Ergebnisse der updateOne()-Abfrage zurückgeben, da ich moddedCount-Informationen zu main.js benötige. Das zurückgegebene Ergebnis ist jedoch undefiniert. Ich habe gelesen, dass ich Rückrufe oder Versprechen verwenden sollte, Versprechen sind besser. Wie kann ich das in meinem Fall machen?

Dies ist mein Code im Modul 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;

So nenne ich es auf 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粉957661544235 Tage vor332

Antworte allen(1)Ich werde antworten

  • 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
        }
    }

    Antwort
    0
  • StornierenAntwort