سلام وقت بخیر
من یه تابع به نام getUserدارم که اطلاعات یک کاربر رو از دیتابیس میگیره و پرامیس برمیگردونه
یه تابع دیگه هم به نام getuserAsync دارم که برای راحتی کار اینو نوشتم که همین کار رو به صورت async انجام میده . در واقع این تابع از تابع قبلی (getUser)استفاده میکنه. توابع رو تا اینحا براتون میزارم :
static getUser = (chatId) => {
return new Promise((resolve, reject) => {
mongo.getConnection()
.then((db) => {
db.collection("users")
.findOne({chat_id : chatId}, (err, data) => {
if (err)
return reject(err)
return resolve(data)
})
})
.catch(reject)
})
}
static getUserAsync = async (chatId) => {
return await this.getUser(chatId)
}
حالا جایی که میخوام از تابع getuserAsync استفاده کنم داره یه همچین چیزی رو برمیگردونه :
Promise { <pending> }
در واقع اینجا از getUserAsync استفاده کردم که خروجی بالا توی کنسول لاگ شده :
let user = UserRepository.getUserAsync(chatId)
console.log(user)
مشکل کجاست؟
میتونی اینجوری بنویسی که زیباتر بشه
static getUser = async (chatId) => {
let db=await mongo.getConnection()
let user=await db.collection("users").findOne({chat_id : chatId});
if (!user)
//error
return user
}
@behzad.azizan1991
قسمت آخر رو به صورت زیر لاگ کنید ببینید جواب چی میشه :
UserRepository.getUserAsync(chatId).then(function(result) {
console.log(result)
})
درود بر شما در جای هم که میخواید از کد زیر استفاده کنید
let user = UserRepository.getUserAsync(chatId)
console.log(user)
باید از await برای getUserAsync بهره ببرید حتما یعنی
let user = await UserRepository.getUserAsync(chatId)
console.log(user)
یا به شکلی که دوستمون گفته عمل بفرمایید
UserRepository.getUserAsync(chatId).then(function(result) {
console.log(result)
})
@hesammousavi ممنون پس با این شرایط نیازی به ساخت متد getUserAsync نیست درسته؟ (نمونه کدی که گذاشتم رو مطالعه بفرمایید من یک متد به اسم getUser دارم و یک متد دیگه به اسم getUserAsync ۹) اینطور که من متوجه شدم نیازی به متد getUserAsync نیست دیگه
میتونی اینجوری بنویسی که زیباتر بشه
static getUser = async (chatId) => {
let db=await mongo.getConnection()
let user=await db.collection("users").findOne({chat_id : chatId});
if (!user)
//error
return user
}
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟