我们正在开发一个使用新的firebase云功能的应用程序.目前正在发生的事情是将事务放入队列节点.然后该函数删除该节点并将其放入正确的节点.由于能够脱机工作,因此已实施.
我们目前的问题是功能的速度.该功能本身需要大约400毫秒,所以没关系.但有时功能需要很长时间(大约8秒),而条目已经添加到队列中.
我们怀疑服务器需要时间来启动,因为当我们在第一次执行后再次执行操作时.它花费的时间更少.
有什么方法可以解决这个问题吗?在这里,我添加了我们的功能代码.我们怀疑它没有任何问题,但我们添加它以防万一.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
const database = admin.database();
exports.insertTransaction = functions.database
.ref('/userPlacePromotionTransactionsQueue/{userKey}/{placeKey}/{promotionKey}/{transactionKey}')
.onWrite(event => {
if (event.data.val() == null) return null;
// get keys
const userKey = event.params.userKey;
const placeKey = event.params.placeKey;
const promotionKey = event.params.promotionKey;
const transactionKey = event.params.transactionKey;
// init update object
const data = {};
// get the transaction
const transaction = event.data.val();
// transfer transaction
saveTransaction(data, transaction, userKey, placeKey, promotionKey, transactionKey);
// remove from queue
data[`/userPlacePromotionTransactionsQueue/${userKey}/${placeKey}/${promotionKey}/${transactionKey}`] = null; …Run Code Online (Sandbox Code Playgroud) node.js firebase firebase-realtime-database google-cloud-functions
我是firebase的新手,我想知道在其上构建数据的最佳方法是什么.
我有一个简单的例子:
我的项目有申请人和申请.1申请人可以有几个申请.如何在firebase上关联这两个对象?它是否像关系数据库一样工作?或者在数据设计方面需要完全不同的方法?
我一直在使用Angular2进行Web开发,并且一直使用Angular2和Firebase来运行本地服务器.在使用Ionic创建服务器时,我无法找到类似于键入quit的命令,因此我每次都必须关闭终端选项卡.有没有办法结束服务器并让我的终端选项卡回来?
谢谢.
我对编码比较新,遇到了麻烦.
我有这个代码将数据发送到firebase
app.userid = app.user.uid
var userRef = app.dataInfo.child(app.users);
var useridRef = userRef.child(app.userid);
useridRef.set({
locations: "",
theme: "",
colorScheme: "",
food: ""
});
Run Code Online (Sandbox Code Playgroud)
但是,我一直收到错误:
FIREBASE警告:设置为/ users /(GoogleID)失败:permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(...)
当我试着查看它时,它会讨论Firebase的规则,它似乎是一种我还没有学过的语言(或者它只是在我脑海中).有人可以解释导致问题的原因吗?我以为是我要求它存储电子邮件和用户显示名称而你只是不允许这样做,但当我把它拿出来时我仍然遇到同样的问题.有没有办法在没有设定规则的情况下避免这种错误,或者规则是我可以教自己如何在一天内写作,或者我是否只是走出了我的联盟?
谢谢你的帮助!
javascript firebase firebase-security firebase-realtime-database
使用新的firebase云功能,我决定将我的一些HTTP端点移动到firebase.一切都很好......但我有以下问题.我有两个端点由HTTP触发器(云功能)构建
虽然第一个端点很好,但对于我的第二个端点,我希望仅为经过身份验证的用户保护它.意思是拥有我之前生成的令牌的人.
我该如何解决这个问题?
我知道我们可以使用云函数获取Header参数
request.get('x-myheader')
Run Code Online (Sandbox Code Playgroud)
但有没有办法保护端点就像保护实时数据库一样?
firebase firebase-security firebase-authentication firebase-realtime-database google-cloud-functions
是否可以使用新的firebase数据库firestore计算集合中有多少项?
如果是这样,我该怎么做?
我以为我读过您可以使用新的Firebase Firestore查询子集合,但我没有看到任何示例.例如,我通过以下方式设置了Firestore:
我怎样才能查询"查找songName =='X'的所有舞蹈"
我们在应用程序的不同部分看到了此 ANR。想了解导致此 ANR 的原因吗?
main (native): tid=1 systid=31940
#00 pc 0x5431c libc.so
#01 pc 0x1313a5 libart.so
#02 pc 0x2ab05b libart.so
#03 pc 0x3659 libnativehelper.so
#04 pc 0x9dee9 libandroid_runtime.so
#05 pc 0x65c45 libgui.so
#06 pc 0x11dcd libutils.so
#07 pc 0x11abf libutils.so
#08 pc 0xbcc7d libandroid_runtime.so
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:339)
at android.os.Looper.loop(Looper.java:199)
at android.app.ActivityThread.main(ActivityThread.java:8276)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:612)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1006)
Run Code Online (Sandbox Code Playgroud)
这是 firebase 对于此 ANR 的说法 -
ANR 发生时该线程处于空闲状态。我们没有足够的信息来确定根本原因。
performance android android-anr-dialog firebase android-looper
我目前正在学习如何为Firebase使用新的Cloud Functions,而我遇到的问题是我无法访问我通过AJAX请求编写的函数.我收到"No'Access-Control-Allow-Origin'"错误.这是我写的函数的一个例子:
exports.test = functions.https.onRequest((request, response) => {
response.status(500).send({test: 'Testing functions'});
})
Run Code Online (Sandbox Code Playgroud)
该函数位于以下URL:https: //us-central1-fba-shipper-140ae.cloudfunctions.net/test
Firebase文档建议在功能中添加CORS中间件,我已经尝试过但它对我不起作用:https://firebase.google.com/docs/functions/http-events
我就这样做了:
var cors = require('cors');
exports.test = functions.https.onRequest((request, response) => {
cors(request, response, () => {
response.status(500).send({test: 'Testing functions'});
})
})
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我很感激任何帮助.
更新:
道格史蒂文森的回答有所帮助.添加({产地:真})固定的问题,我也不得不改变response.status(500),以response.status(200)我在第一次完全错过.
我试图了解什么eu.artifacts.%PROJECT NAME%.appspot.com是。它目前占用了我每天 5GB 限制的 800MB 存储空间。它只包含应用程序/八位字节流类型的文件。这个bucket是自动创建的,文件路径是eu.artifacts....appspot.com/containers/images。2 个最重的文件有 200 mb 和 130 mb。我尝试删除它,但它再次自动创建。用户可以在我的网站上上传图片,但该存储桶目前只需要大约 10mb 包含所有用户图像。
所以我的问题是:这个桶是做什么用的,为什么它这么重?
firebase ×10
javascript ×2
android ×1
angular ×1
angular-cli ×1
cors ×1
node.js ×1
nosql ×1
performance ×1