当我的应用程序启动时,我会对Firebase进行初始提取以提取所有数据。当我稍后将数据添加到我的Firebase时,我只希望它能够获得已添加的新子项。
我目前正在实现这一目标。在Firebase中有更好的方法或内置的方法吗?
let initialFetch = false;
ref.once('value', snap => {
// get all child data
initialFetch = true;
});
ref.on('child_added', (snap) => {
if (!initialFetch) return;
// get new child data
});
感谢任何帮助。提前谢谢!
答案 0 :(得分:0)
如果您需要新数据和后续数据,请使用##########################################################################
# PaymentechSDK_7.4.0
# Build Date: 11/14/2014
# Build Time: 10:06:20
##########################################################################
##########################################################################
# General Properties
##########################################################################
DTDVersion=PTI62
##########################################################################
# Transaction Processor Properties
##########################################################################
TransactionProcessor.poolSize=10
TransactionProcessor.retries=2
##########################################################################
# Response code configuration ('gateway' or 'host')
##########################################################################
Response.response_type=gateway
##########################################################################
# Java Security Providers
##########################################################################
security.provider.1=sun.security.provider.Sun
security.provider.2=com.sun.rsajca.Provider
security.provider.3=com.sun.net.ssl.internal.ssl.Provider
##########################################################################
# IBM Security Providers
#For IBM JDK Websphere merchants
#comment out or remove the above sun security provider list
#uncomment the following IBM security provider list
#No need to have any sun related jar files in CLASSPATH for Orbital SDK
##########################################################################
#security.provider.1=com.ibm.crypto.provider.IBMJCE
#security.provider.2=com.ibm.security.jgss.IBMJGSSProvider
##########################################################################
# Engine Properties
##########################################################################
engine.class=com.paymentech.orbital.sdk.engine.https.HttpsEngine
engine.hostname=orbitalvar1.paymentech.net
engine.port=443
engine.hostname.failover=orbitalvar2.paymentech.net
engine.port.failover=443
engine.connection_timeout_seconds=90
engine.read_timeout_seconds=90
engine.authorizationURI=/authorize
engine.sdk_version=PaymentechSDK_7.4.0
#########################################################################
# Proxy Information
#########################################################################
#engine.proxyname=myproxyname
#engine.proxyport=myproxyport
# Type of SSL SocketFactory implementation to use
# The values for this property are as follows:
# default
# strict
engine.ssl.socketfactory=default
# To specify a non-default location for your truststore (cacerts) file,
# uncomment and edit these two lines
#engine.ssl.trustore.filename=C:/jdk1.3.1_03/jre/lib/security/cacerts
#engine.ssl.trustore.passphrase=changeit
##########################################################################
# XML Templates Configuration
##########################################################################
# Templates
XMLTemplates.Request.NewOrder=%PAYMENTECH_HOME%/xml/NewOrder.xml
XMLTemplates.Request.EOD=%PAYMENTECH_HOME%/xml/EOD.xml
XMLTemplates.Request.FlexCache=%PAYMENTECH_HOME%/xml/FlexCache.xml
XMLTemplates.Request.MFC=%PAYMENTECH_HOME%/xml/MFC.xml
XMLTemplates.Request.Profile=%PAYMENTECH_HOME%/xml/Profile.xml
XMLTemplates.Request.Reverse=%PAYMENTECH_HOME%/xml/Reverse.xml
XMLTemplates.Request.Inquiry=%PAYMENTECH_HOME%/xml/Inquiry.xml
XMLTemplates.Request.AccountUpdater=%PAYMENTECH_HOME%/xml/AccountUpdater.xml
XMLTemplates.Request.SafetechFraudAnalysis=%PAYMENTECH_HOME%/xml/SafetechFraudAnalysis.xml
# Complex Type Mappings
XMLTemplates.Request.ComplexRoot.PC3Core=%PAYMENTECH_HOME%/xml/templates/PC3Core.inc
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1=PC3LineItems
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.CountElement=PC3LineItemCount
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.EnforceGreaterThanZero=yes
XMLTemplates.Request.ComplexRoot.PC3Core.RecursiveElement1.MaxCount=98
XMLTemplates.Request.ComplexRoot.PC3LineItems=%PAYMENTECH_HOME%/xml/templates/PC3LineItems.inc
XMLTemplates.Request.ComplexRoot.PC3LineItems.ChildIndexElement=PC3DtlIndex
XMLTemplates.Request.ComplexRoot.SettleRejectBin=%PAYMENTECH_HOME%/xml/templates/SettleRejectBin.inc
XMLTemplates.Request.ComplexRoot.PriorAuthID=%PAYMENTECH_HOME%/xml/templates/PriorAuthID.inc
XMLTemplates.Request.ComplexRoot.FraudAnalysis=%PAYMENTECH_HOME%/xml/templates/FraudAnalysis.inc
XMLTemplates.Request.ComplexRoot.SoftMerchantDescriptors=%PAYMENTECH_HOME%/xml/templates/SoftMerchantDescriptors.inc
。它将立即为所有现有的孩子开火,随后为所有已加入的孩子开火。
如果您只想要新数据,请为您的孩子添加时间戳并child_added
如果您需要新数据和后续数据,但希望以不同方式对待初始孩子:请像现在一样使用ref.orderByChild('timestamp').startAt(Date.now())
和 child_added
。< / p>
另见:How to only get new data without existing data from a Firebase?