如何在 Firebase 中以随机模式对帖子进行排序,而无需重复



我想显示来自用户关注列表的帖子列表。我可以按默认顺序显示它,但我想以随机顺序显示它。我正在使用一个名为shuffle的函数,它可以工作,但是在我的代码中无法正常工作,因为重复了许多帖子。我的代码是这样的:

function feed(){
var postList = document.getElementById('postList');
var userId = "a";
let rangeNumbers=[];
var keys = firebase.database().ref('users/'+userId).child("following").once('value').then(function(datakey){
        let usersPost = [];
    let usersPostProfile = [];
        var contador = 0;
    let htmlPost = "";
        var i = 0;
        datakey.forEach(function(data){
            let userDB = data.val();
            let userIdFollowing = userDB.id;
            firebase.database().ref('posts/').orderByChild("id").equalTo(userIdFollowing).once('value').then(function(postdatakey){
              let cantidad = postdatakey.numChildren();

         postdatakey.forEach(function(postdata){
            //Detecta todos los datos de la publicacion
            let postDB = postdata.val();
            let postId = postDB.id;

      firebase.database().ref('/users/' + postId).once('value').then(function(snapshot) {
  let username = (snapshot.val() && snapshot.val().username);
  let name = (snapshot.val() && snapshot.val().name);
  let image = (snapshot.val() && snapshot.val().image);
  // ...
let newArray = {
            text: postDB.text,
            image: postDB.image,
            imageProfile: image,
            username: username,
            name: name,
            timestamp: postDB.timestamp
      };
 usersPost.push(newArray);
 htmlPost += 
      '<div class="postItem">'
      +'<br>'
    +'<img class="post-img-profile" src="'+usersPost[i].imageProfile+'">'
    +'<div class="userData">'
      +'<a><b>'+usersPost[i].name+'</b></a><br>'
      +'<a>'+usersPost[i].username+'</a>'
      +'</div>'
      +'<br><br><Br><br>'
      +'<div class="post">'
      +'<p>'+usersPost[i].text+'</p>'
      +'<div class="center-content">'
        +'<img class="imagePostBig" src="'+usersPost[i].image+'">'
      +'</div>'
    +'</div>'
    +'<div class="optionPost">'
      +'<img class="post-icon" src="https://img.icons8.com/ios/50/000000/like.png">'
    +'<img class="post-icon" src="https://img.icons8.com/ios/50/000000/comments.png">'
    +'<div class="line"></div>'
    +'</div>'

  +'</div>';
        //console.log(htmlPost);
        postList.innerHTML = htmlPost;
i++
      });

         });

            });  

                            });

    });  

}
function shuffle(array) {
  var currentIndex = array.length, temporaryValue, randomIndex;
  // While there remain elements to shuffle...
  while (0 !== currentIndex) {
    // Pick a remaining element...
    randomIndex = Math.floor(Math.random() * currentIndex);
    currentIndex -= 1;
    // And swap it with the current element.
    temporaryValue = array[currentIndex];
    array[currentIndex] = array[randomIndex];
    array[randomIndex] = temporaryValue;
  }
  return array;
}

feed();

我正在使用随机播放功能,但它重复了帖子。你能帮我吗?如何以随机顺序显示此帖子?

很难说,因为我无法运行它,而且您从未在发布的代码中实际调用shuffle,但在我看来,您只需要在正确的位置调用shuffle。

在之前的线上

postdatakey.forEach(function(postdata){

shuffle(postdatakey);

随机化帖子的顺序。

相关内容

  • 没有找到相关文章

最新更新