Как я могу отсортировать снимок на основе значения timeStamp ниже в структуре? - PullRequest
1 голос
/ 30 июня 2019

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

  const userRef = admin.database().ref('Posts').child(uid)
  const update = userRef.orderByChild('Media/media1/postTimeStamp').once('value')
  .then(snap => {
    var i = 1

    if (snap.exists()) {
      snap.forEach((snapVal) => {
        if (i <= 2) {
          const postID = String(snapVal["key"])
          const postRef = admin.database().ref("Timeline").child(followerUID).child(uid + ":" + postID).child("timeStamp")

          let coredate = new Date().getTime();
          let unixdate = new Date( '2001/01/01' ).getTime();
          let mactimestamp = ( coredate-unixdate )/1000;

          postRef.set(mactimestamp)//update

Я пытался сделать что-то вроде:

let array = (snap.val).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0) //but this gets an error (cant be done)

Цель состоит в том, чтобыбыть в состоянии пройти через этот массив сообщений в порядке поступления.

"Posts" : {
"uid" : {
  "post:583541341" : {
    "Media" : {
      "postTime" : {
        "postTimeStamp" : 5.83541341963183E8

1 Ответ

2 голосов
/ 30 июня 2019

Вы можете получить все сообщения для данного пользователя, упорядоченные по отметке времени:

const userRef = admin.database().ref('Posts').child(uid)
userRef.orderByChild('Media/postTime/postTimeStamp').once('value')
.then(snap => {
  snap.forEach((snapshot) => {
    console.log(snapshot.key);
  });
});

Поскольку путь Media/postTime/postTimeStamp существует под каждым дочерним узлом, база данных может упорядочить значение этого свойства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...