我正在创建一个模块,用于使用 module.exports 在 MongoDB 上记录购买的商品。这是我第一次使用这个 module.exports。
我需要返回 updateOne() 查询的结果,因为我需要在 main.js 上使用 moddedCount 信息。然而,返回的结果是未定义的。我读到我应该使用回调或承诺,承诺更好。我该如何在我的案例中做到这一点?
这是我在 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;
这是我在 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
} Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
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 } }