mongodb でクエリを実行すると、module.exports が未定義を返します
P粉957661544
P粉957661544 2024-02-26 21:36:14
0
1
376

module.exports を使用して、購入したアイテムを MongoDB に記録するモジュールを作成しています。この module.exports を初めて使用します。

main.js の moddedCount 情報が必要なので、updateOne() クエリの結果を返す必要があります。ただし、返される結果は未定義です。コールバックまたはプロミスを使用する必要があると読みましたが、プロミスの方が優れています。私の場合、どうすればよいでしょうか?

これは、recordPurchase.js モジュールのコードです:

const RecordPurchase = (ユーザーID、アイテム、価格) => {
    db.collection("users").updateOne({ userid: userid }, { $push: { 購入数: { item: item, 価格: 価格 } } })
        .then((結果) => {
            if (result.modifiedCount > 0) {
                console.log("成功");
                return result; //updateone 情報を返す
            }
        })
        .catch((err) => {
            console.log("購入の記録中にエラーが発生しました: " err)
        })
}

module.exports = レコード購入;

これが main.js での呼び出し方法です

if (msg.content === "テスト") {
    const ユーザー ID = "12345";
    const item = "何らかのアイテム名";
    定価格 = 10;
    const result = RecordPurchase(ユーザーID、アイテム、価格)
    console.log(result); // updateone/result 情報を返します
  }

P粉957661544
P粉957661544

全員に返信(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
    }
}
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート