無法從 mongoose promise 中提取資料。我想使用適當的 ID 從 mongoose 中找到一組用戶,并將結果沿承諾鏈傳遞。
該查詢正在從資料庫中提取正確的資料。當我將查詢嵌套在 Promise 鏈中,然后嘗試傳遞結果時,我的 console.log 顯示[Function (anonymous)]. 是否有適當的結構可以使用 mongoose 從 MongoDB 中提取資料,然后沿承諾鏈傳遞該資料?
承諾鏈:
addItem(guildId, items, timeCreated) {
return new Promise((resolve, reject) => {
// other functionality omitted for brevity
resolve(guildId, items, timeCreated);
}).then((guild, item, timeCreate) => {
findGroupUsers(guild).then((response) => {
return new Promise((resolve, reject) => {
console.log(response.userId);
resolve(response);
});
});
貓鼬查詢:
const findGroupUsers = async (guildId) => {
const members = await EngagementTracking.find({ guildId: `${guildId}` }).exec();
console.log(members);
return members;
};
經過驗證的答案成功地從 addItem 內部的查詢中提取資料。為了繼續并沿鏈傳遞查詢結果,我執行了以下操作:
addItem(guildId, items, timeCreated) {
return new Promise((resolve, reject) => {
//other functionality
resolve(guildId, items, timeCreated);
}).then((guild, items, timeCreate) => {
return findGroupUsers(guild).then((response) => {
return new Promise((resolve) => { resolve(response); });
});
}).then((data) =>{// other functionality //});
uj5u.com熱心網友回復:
您的功能添加專案似乎有點奇怪,您應該這樣做:
addItem(guildId, items, timeCreated) {
return new Promise((resolve, reject) => {
// other functionality omitted for brevity
resolve(guildId, items, timeCreated);
}).then((guild, predict, timeCreate) => {
return findGroupUsers(guild).then((response) => {
console.log(response.userId);
return response;
});
你不需要在 .then 中回傳一個新的承諾,然后也警告你應該回傳你的承諾(你沒有回傳 findGroupUser)
最后你應該有一個 addItem.then(/ do something /) 或一個 await
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432400.html
標籤:javascript 节点.js 异步 猫鼬 承诺
