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