web-dev-qa-db-fra.com

Ajouter un horodatage dans les documents Firestore

Je suis débutant chez Firestore. Docs Firestore dit ...

Important : Contrairement aux "ID push" dans la base de données en temps réel Firebase, les ID générés automatiquement par Cloud Firestore ne fournissent aucun ordre automatique. Si vous souhaitez pouvoir commander vos documents par date de création, vous devez stocker un horodatage en tant que champ dans les documents.

Référence: https://firebase.google.com/docs/firestore/manage-data/add-data

Dois-je donc créer un nom de clé comme timestamp dans le document? Ou created suffit pour remplir la déclaration ci-dessus de la documentation Firestore.

{
    "created": 1534183990,
    "modified": 1534183990,
    "timestamp":1534183990
}
7
Vicky Thakor

Tout ce que vous voulez appeler c'est bien afaik. Ensuite, vous pouvez utiliser orderByChild ('créé').

J'utilise également principalement firebase.database.ServerValue.TIMESTAMP lors de la définition de l'heure

ref.child(key).set({
  id: itemId,
  content: itemContent,
  user: uid,
  created: firebase.database.ServerValue.TIMESTAMP 
})
7
Saccarab

La documentation ne suggère le nom d'aucun de vos champs. La partie que vous citez ne fait que dire deux choses:

  1. Les identifiants de documents générés automatiquement pour Firestore n'ont pas de commande temporelle naturelle comme ils le faisaient dans la base de données en temps réel.
  2. Si vous souhaitez une commande temporelle, stockez un horodatage dans le document et utilisez-le pour ordonner vos requêtes. (Tu peux appeler ça comme tu le veux.)
2
Doug Stevenson

La façon dont cela a fonctionné avec moi, prend simplement l'horodatage du paramètre snapshot snapshot.updateTime

exports.newUserCreated = functions.firestore.document('users/{userId}').onCreate(async (snapshot, context) => {
console.log('started!     v1.7');
const userID = context.params['userId'];

firestore.collection(`users/${userID}/lists`).add({
    'created_time': snapshot.updateTime,
    'name':'Products I ♥',
}).then(documentReference => {
    console.log("initial public list created");
    return null;
  }).catch(error => {
    console.error('Error creating initial list', error);
    process.exit(1);
});

});

1
Bishoy Hanna

Essayez celui-ci pour Swift 4 Timestamp (date: Date ())

let docData: [String: Any] = [
"stringExample": "Hello world!",
"booleanExample": true,
"numberExample": 3.14159265,
"dateExample": Timestamp(Date()),
"arrayExample": [5, true, "hello"],
"nullExample": NSNull(),
"objectExample": [
    "a": 5,
    "b": [
        "nested": "foo"
    ]
]
]
db.collection("data").document("one").setData(docData) { err in
if let err = err {
    print("Error writing document: \(err)")
} else {
    print("Document successfully written!")
}
}
0
coders

Swift 5.1

...
"dateExample": Timestamp(date: Date()),
...
0
Stephane Paquet