AdonisJS Query не работает правильно - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над улучшением изучения AdonisJS и работаю над проектом, пока я учусь.

Проект является клоном, похожим на социальную, и я пытаюсь привлечь только пользователей, за которыми я следую в действиилента показывает их фотографию только один раз, а затем показывает только четыре последних сообщения.

Однако, что в настоящее время происходит с моим кодом, если я не включаю пользователей, за которыми я следую, я получаю всех пользователей всистема и их пользовательские фото повторяются для каждого сообщения.

Если я соблюдаю ограничение 4, я получаю только самые первые 4 сообщения в базе данных от первого пользователя в базе данных. Я пытаюсь показать последние 4 сообщения для каждого пользователя, на которого я подписан. Вот мой код ниже.

Любые идеи будут с благодарностью!

FollowedUserPosts: async (_, __, context) => {
          let auth = context.auth;
          try {
              await auth.check()
              const users = await Database.table('users').select('*')
              for (let i=0; i<users.length; i++) {

                // Find users I follow
                const myfollows = await Follow.query()
                .where('follower_uuid', '=', user.uuid)
                .where('follow_uuid', '=', user.follow_uuid)
                .fetch()

                  // Add profile Image
                  const photos = await PhotoUpload.query()
                  .where('belongsTo', '=', users[i].uuid)
                  .where('type', '=', 'userPhoto')
                  .fetch()
                  if (photos.rows.length >0) {
                      users[i].photo = photos.rows[0].name
                  }
              }

              // posts list from posts table
              const posts = await Database.table('posts').select('*').limit(4)

              // loop posts
              for (let i=0; i<posts.length; i++) {

                  // user posted current post
                  const user = users.filter((value) => value.id === posts[i].op)[0];

                  posts[i].opFirstName = user.firstname;
                  posts[i].opLastName = user.lastname;
                  posts[i].opPhoto = user.photo;

                  // Add post images
                  const photos = await PhotoUpload.query()
                  .where('belongsTo', '=', posts[i].uuid)
                  .where('type', '=', 'post')
                  .fetch()

                  posts[i].photos = photos.rows

              }

              return posts

          } catch (error) {
              throw new Error('Missing or invalid jwt token')
          }
      },
...