问题描述
我有一个包含userId
的帖子列表。在获取n个帖子时,我想循环浏览并获取和获取用户数据并将其附加到帖子中。
但是在解决循环之前,该函数将以undefined
返回。之后,发布数据会被列出,但我希望首先获取发布数据。
我是诺言和异步的新手。如果我可以使用其他解决方案,请通知我。
我正在使用sailsjs。
fetchPosts: async (req,res) => {
let Feeds = [];
posts = await Posts.find({
skip: offset,limit: limit,sort: sort,});
if (posts) {
/**
* LOOPING THROUGH FETCHED POST LOOP TO GET
* USER DATA,LIKE,SHARE,FOLLOW,BOOKMARKS
*/
const functionWithPromise = (post) => {
//a function that returns a promise
console.log(Feeds);
return Promise.resolve(post);
};
const anotherAsyncFunction = async (post) => {
return functionWithPromise(post);
};
const getUser = async (userId,post) => {
return new Promise(async (resolve,reject) => {
const user = await Account.findOne({ id: userId });
if (user) {
post = {
...post,user: {
id: user.id,uName: user.uName,provider: user.provider,dpURL: user.dpURL,},};
resolve(post);
} else {
reject(null);
}
});
};
const anAsyncFunction = async (post) => {
if (post.isAdminPost) {
post = {
...post,user: {
id: "5f3b8bf00dc3f12414b7f773",// this is usedid of admin@dopaminetalks.com in `Admin` model
uName: "DTOfficial",provider: "LOCAL",dpURL: "/dpURL/86a73b80-babc-4caa-a84c-762f6e9c1b36.png",};
Feeds = [...Feeds,post];
return anotherAsyncFunction(Feeds);
} else {
getUser(post.userId,post).then((post) => {
Feeds = [...Feeds,post];
return anotherAsyncFunction(Feeds);
});
}
};
const getData = async () => {
return Promise.all(posts.map((post) => anAsyncFunction(post)));
};
getData().then((data) => {
console.log(data);
return res.json({
status: true,msg: "Posts Fetched",data: data,});
});
}
},
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)