Firebase:添加新子项

时间:2016-09-17 17:42:08

标签: javascript firebase firebase-realtime-database

当我的应用程序启动时,我会对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
});

感谢任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 如果您需要新数据和后续数据,请使用########################################################################## # 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 。它将立即为所有现有的孩子开火,随后为所有已加入的孩子开火。

  2. 如果您只想要新数据,请为您的孩子添加时间戳并child_added

  3. 如果您需要新数据和后续数据,但希望以不同方式对待初始孩子:请像现在一样使用ref.orderByChild('timestamp').startAt(Date.now()) child_added。< / p>

  4. 另见:How to only get new data without existing data from a Firebase?