module.exports gibt bei Abfragen mit mongodb undefiniert zurück
P粉957661544
P粉957661544 2024-02-26 21:36:14
0
1
377

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粉957661544
P粉957661544

Antworte allen(1)
P粉805931281

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
    }
}
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage