cari

Rumah  >  Soal Jawab  >  teks badan

module.exports mengembalikan tidak ditentukan apabila membuat pertanyaan dengan mongodb

Saya sedang mencipta modul yang merekodkan item yang dibeli pada MongoDB menggunakan module.exports. Ini adalah kali pertama saya menggunakan modul ini.eksport.

Saya perlu mengembalikan hasil pertanyaan updateOne() kerana saya memerlukan maklumat moddedCount pada main.js. Walau bagaimanapun, keputusan yang dikembalikan tidak ditentukan. Saya membaca bahawa saya harus menggunakan panggilan balik atau janji, janji adalah lebih baik. Bagaimanakah saya boleh melakukan ini dalam kes saya?

Ini adalah kod saya dalam 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;

Beginilah saya memanggilnya di 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粉957661544324 hari yang lalu390

membalas semua(1)saya akan balas

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

    balas
    0
  • Batalbalas