addDeposit(account, deposit) {
let depositsDoc = this.db.collection("accounts")
.doc(account.id)
.collection("deposits")
.doc("deposits");
return new Promise((resolve, reject) => {
deposit.created_at = firebase.firestore.FieldValue.serverTimestamp();
depositsDoc.update({
"deposits": firebase.firestore.FieldValue.arrayUnion(deposit)
})
.then((a) => {
resolve('success');
})
.catch((error) => {
reject("failed");
});
})
.then((res) => {
return res;
})
.catch((error) => {
return error;
})
}
带angular的Firestore(默认使用firebase SDK,不使用angularfire)
我试图通过直接添加一个调用时间戳的“created_at”属性来向存款对象添加时间戳。通过这样做,我得到了上面标题的错误。我如何在firestore中的对象数组中添加时间戳?
3条答案
按热度按时间brccelvz1#
使用此
let deposit.created_at= firebase.firestore.Timestamp.now();
更多信息请访问https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp#now
w8ntj3qf2#
不能将
FieldValue.serverTimestamp()
用作对文档字段的数组类型值进行联合(添加)或删除的值。如果你想使用这个时间戳值,你需要将它直接传递给你正在更新或设置的字段。对于FieldValue
类中的所有内容都是如此。该类以这种方式命名是有原因的-它只适用于 * 字段值 *,而不是数组的元素。请注意,嵌套的Map字段确实算作字段值。在路径中包含任何数组都是不可行的。您必须考虑另一种方式来构建您的数据,以满足您的需求并满足Firestore的要求。
txu3uszq3#
根据此页面:https://github.com/invertase/react-native-firebase/issues/1831
目前尚不支持。
但是如果你不需要firebase服务器的时间:你可以使用经典的Date对象: