如何检查request.resource.data.myArray中是否只有字符串
循环和递归调用是不允许的。这在今天是不可能的,除非您知道数组的大小,并且您编写了一个表达式来检查每个索引处的元素。然而,你所要求的是你想要做的合理的事情,你应该为此付出代价。但要记住,这离实现还有很长的路要走
如果规则语言有一个lambda类型,您可以将一个谓词函数传递到一个方法中,该方法可以确保它只为列表中的每个元素返回true,那么这最终会起作用。但这一概念目前还不存在,因此需要付出相当大的努力才能实现。这是
我试图为我的新firestore数据库找到正确的安全规则
为了简化,我的web应用程序有一个问题列表,可以用是或否来回答。该应用程序用随机问题提示匿名用户,他们回答是或否,并提示另一个问题。
稍后,用户可以看到问题列表和回答明细(即30%是,70%否)
我想确保我的应用程序不会被恶意的人滥用,例如发送1000个请求来回答相同的问题
我当时正在观看有关firestore的安全规则视频,但找不到一种只能让合法答案通过的模式
任何指针?谷歌云Firestore安全规则允许您控制对数据库中文档和集合的访
我使用Papaparse更新Firestore数据库中的数据。若我不想更新字段,我会在CSV文件中留下空单元格。如果值==null,如何跳过批更新/设置
var productHeight = value['productHeight'];
batch.set(docRef, {
productWeight: parseInt(productWeight),//if productWeight==null do nothing/skip update
...
我不确定到底是什么问题。。。您
我有带时间戳的桌子。我想用当天的日期检查时间戳。如果日期是2020年6月21日,我希望获得当天的记录。该代码不起作用:
where("creation_date", "==", new Date())
我想出来了。代码如下:
const startToday = new Date(),
endToday = new Date();
// Set up start date
startToday.setHours(0);
startToday.setMi
我尝试在Firestore规则中使用isAdmin函数:
function isAdmin() {
return request.auth.token.admin == true;
// return request.auth.token.claims.admin == true; <--- I also tried
}
这是记录令牌结果时的声明字段:
claims:
admin: true
auth_time: 1596310796
email_verifi
当我试图删除一个不存在的文档时,.onCreate会被空数据触发吗
编辑(根据Doug的要求进行最低限度的复制)
我有两个飞镖(颤振)功能
Future<void> testCreate() async {
return await Firestore.instance.collection('test_collection').document('test_doc').setData(Map<String,dynamic>());
}
Future<voi
这应该相当容易,但我在Firestore的分层数据读取中遇到了一个问题。以官方文件中的例子为例,稍加修改,我已经
service cloud.firestore {
match /databases/{database}/documents {
match /cities/{city} {
allow read: if resource.data.visible == true;
// Explicitly define rules for the 'l
Firestore(网络)
帮助我根据ID编写随机文档请求
我可以在不获取全部收藏的情况下完成此操作吗
const questions=[];
const docRef=db.collection('ru')。doc(category)。collection('questions');
试一试{
const doc=await docRef.get();
文件格式((项目)=>{
问题。推送(item.data());
});
}捕获(e){
投掷e;
}您应该编写一些代码来展示您的尝试。听
想知道处理上传到firestore DB的失败/部分数据的标准/最佳做法是什么(如果有)
例如,假设用户需要通过以下方式上传到两个不同的集合
let res = undefined
let docID = firebase.auth().currentUser.uid
try {
res = await firebase.firestore().collection('someCollection')
.doc(docID)
.set(someData)
我有一个带有存储触发器的云函数,我知道我需要返回承诺以正确结束我所做的函数,但我仍然在控制台中收到警告:“函数返回了未定义的、预期的承诺或值”
你实际上没有从你的函数中返回承诺。将关键字return放在db.collection(…)之前
exports.elementChange = functions.storage.object().onFinalize((object) => {
var element = {
name: object.name,
我正在尝试通过本地终端部署云功能。为此,我使用以下代码:
gcloud beta functions deploy networkcheck \
--region=europe-west1 \
--project=project-id \
--entry-point functionName \
--trigger-event providers/cloud.firestore/eventTypes/document.write \
--trigger-resource pr
我们正在构建一个身份验证系统,该系统将会话的子集合存储在用户文档下,而用户文档又位于用户集合下
伪代码示例:
.set("users/{USER_ID}/sessions/{SESSION_ID}", sessionData)
是否可以在不首先创建父用户文档(具有User\u ID)的情况下上载新会话?是的,即使父文档不存在,也可以在嵌套路径上创建新文档
对于移动和web应用程序,您还可以使用安全规则来确保在允许新会话文档之前父用户ID存在
在我的项目中,我有firestore用户和类的集合。每个用户都可以是一个或多个类的一部分。类文档具有属性成员,该属性成员是一个数组,包含该类中的所有用户UID
例如:
users documents:
doc.id: USER1UID
{ name: 'user1', email: 'user1@user1.com', phone: '+123 456 789 001' }
doc.id: USER2UID
{ name: 'user2', email: 'user2@user2.com',
我有一个firebase功能:
//功能和firestore要求如下
exports.saveData=functions.https.onRequest(异步(req,res)=>{
console.log(“接收到的数据”)
const-busboy=new-busboy({headers:req.headers});
常量字段={}
常量上载={}
//推送字段中不是文件的字段
营业员.on('field',(fieldname,val)=>{
log(`Processed field$
我试图简化firestore安全规则及其在不同环境中的部署(prod/dev/test)。我遇到了最近添加的,看起来对我很有帮助,因为我可以通过编程创建和部署规则。然而,规则集和规则文件的概念非常混乱
特别是,部署多个规则集意味着什么?我从来不知道这一点,但当我运行admin.securityRules().listRulesetMetadata()时,我看到了一个包含100多个这样的规则集的列表。它支持回滚吗?如果是这样的话,人们怎么能这样做呢?最新部署的规则集是否始终是强制执行的,并且它覆盖
下面是一个场景:Onappear我的视图调用ObserveObject类的getData方法。在调试期间,我看到它检索数据并按预期返回数组。当我的视图出现在模拟器上时,数据在列表上短暂闪烁,然后列表变为空白。我在我的应用程序中的几个地方使用了相同的模式,在某些情况下它可以工作(列表显示为它应该的样子),而在其他情况下它变为空白
我正在13.0和13.3模拟器上进行测试,因为在其中一个模拟器上存在各种swiftUI错误。我认为这可能是因为对Firestore的异步调用,但我已经实现了完成处理程序。
我有这样的代码,可以从中获取新插入的文档id:
db.collection("cities").add({
name: "Tokyo",
country: "Japan"
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", e
我正在尝试在我的社交媒体应用程序上实现一个阻塞功能。目前,其中一个提要查询按创建的时间戳按时间顺序对文档进行排序/排序
提议的解决办法
为了在苹果应用商店上发布,我们需要实现一个阻塞功能。我认为很简单,在用户文档中创建一个具有“blockedUsers”字符串数组的字段。现在,当您查询该字段时,使用Firestore支持的not in操作符,您可以获得以下文档列表:
不在blockedUsers数组中
按completedTimestamp排序
出于分页原因将限制为x
问题
但是,在阅读了中
在我的应用程序中,我有一个单一视图中的短音频文件列表。我想下载预下载音频列表中的前3项,这样用户就不用等待音频下载了。下载音频文件列表中的前三项并在这些文件之间提供无缝事务的好方法是什么
数据存储在Firebase存储器中,并使用以下代码获取:
@Published var fons = [Fon]()
init(fonId: String) {
fetchData(fonId: fonId)
}
func fetchData(fonId: String) {
Firesto
根据上面的文档,对于每秒递增速度超过一次的计数器,您需要实现分布式计数器,这相当慢。
随着碎片数量的增加,写入吞吐量呈线性增长,但它也表示成本呈线性增长,而读取吞吐量呈线性下降。
那么,如何实现像YouTube浏览计数器这样每秒递增1000倍的功能,而不会产生疯狂的高账单和极慢的阅读速度呢?
我不认为拥有1000个碎片可以有效地解决这个简单而常见的用例。Youtube浏览量不是实时的,但你仍然需要计算。你可以做的是使用Firestore和RTDB。当用户喜欢post时,您将触发一个云函数,该函数
我有一个Firestore数据库,我尝试备份它
我尝试使用或
但是它不起作用,因为在一个集合中,我使用带有时间戳ID的文档(格式:2018-10-19T12:30:40.066Z)。其他收藏品可以备份
我得到这个信息:
The behavior for Date objects stored in Firestore is going to change AND YOUR APP MAY BREAK.
To hide this warning and ensure your app does n
我的应用程序使用Firestore集合“users/{userId}/alarms/2019/10”,其中2019是当前年份,10是当前月份。我使用一个Cloud Firestore触发器,当此集合发生更改时调用该触发器
在下个月初(11月),我想每月监测“users/{userId}/alarms/2019/11/{alarm}”等。
我尝试了使用“firebase部署--仅函数”部署的以下代码
我从云控制台执行了changeMonthAlarmsListener。我观察到跟踪“新Firest
我想在两个值之间查询数据。
我应该用吗
collection
.where("value",">=",'start')
.where("value","<=",'end')
有什么区别吗?实际上,对于一个查询,可能不会有太大区别。但是,使用startAt和endAt通常仅用于。因此,如果您实际上没有进行任何分页,那么代码的读者看到这些方法可能会感到困惑。第一个示例对于单个查询更为清晰
collection
.orderBy('value')
.startAt('start')
.e
我有一个Firestore文档,如下所示,它被导出到存储
然后,我在GoogleBigQuery中为文档创建了一个表
我已尝试编写更新/插入查询
UPDATE`dataset.feed`set d_1.0=“Imagelink”
此外,还尝试按照Firestore文档使用UNNEST分解阵列。但是,我仍然不知道如何为文档编写更新/插入。数组只能作为一个整体进行更新:
UPDATE `dataset.feed` SET d_1 = ["t0", "t1"
我的云Firestore中有以下设置:
Collection Document Collections Documents
[USERID] - [TESTS] - [1] - [ANSWERS]
[RESULTS]
[2] - [ANSWE
我正试图找出firestore的规则,但是我得到了以下错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.
E/flutter (14485): #0 MethodChannelDocum
我正在构建一个应用程序,其中用户可以有多个标识。这些身份包含公共信息,因此任何人都可以阅读,而身份背后的用户应保持隐私。但是,用户通常应该能够同时通过多个身份管理其应用程序
- Users [collection] (private)
- Identities [collection] (public)
很明显,身份应该是用户文档的子集合,这样用户就可以有效地查询他们的所有身份。但是,当其他人通过集合组查询查询一个或多个身份时,这些文档的路径对他们来说是可见的,如对的回答所示(使用qu
当我在firebase控制台中看到我的数据时,它将如下所示
我正在编写firestore安全规则来保护数据
安全规则:
match /wallpost/{wallpostId} {
allow read: if true;
allow list: if request.query.limit <= 10;
allow create, update, delete: if resource.data.createdBy
在多台设备上运行的应用程序是否可能拥有自己的Firestore数据库,设备用户可以通过自己的登录访问该数据库?否。您通常会让每个用户访问数据库中自己的集合或子集合,由其Firebase身份验证用户id标识,然后使用保护该集合。否。您将为每个用户创建一个包含子项的数据库,以保留其所有数据。这种结构在应用程序中非常常见。您还可以添加只有用户才能访问自己数据的安全功能,以确保数据是独立的谢谢。是否可以使用MongoDB Atlas?或者有没有其他方法可以让用户在使用数据库服务时付费?我不知道这些。你应
我正试图找到一种方法,在一组“对象”文档中执行OR查询
每个对象文档都有一个“类型”字段,它是一个数组
object1:
- name:
- description:
- types:["type-a","type-b","type-d"]
- createdOn
object2:
- name:
- description:
- types:["type-a","type-d"]
- createdOn
object3:
- name:
- description:
我最近加入了一个使用firebase的项目,我正在研究安全规则,我能够成功地为几乎所有事情创建规则,并在大多数情况下创建单元测试。不幸的是,我忘记了在创建一些文档之后正在进行的事务。例如,一旦创建了请求,它也会添加到属于它的每个用户、消费者和提供者的请求中
match /Requests/{requestId} {
allow read: if readRequest();
allow create: if createRequest();
}
match /Users/{use
我尝试了几个小时使用云功能更新我的应用程序中存储在cloud firestore中的用户分数,但我遇到了这个错误,我无法解决这个问题
这是我的代码:
const auth = require('firebase/auth');
const functions = require('firebase-functions');
const nodemailer = require('nodemailer');
const FieldValue = require('f
我是RxJs的新手。是否有可能解决此类透视表问题
假设我有一个包含任意数量项的流
每个项目都是一个介于0和999之间的数字
我想用这条小溪做一张桌子。有10列的表
项目的列号等于项目除以10。所以数字654将转到第6列
因为我们有一个随机数目的项目,因为数字是以随机顺序到达的,所以列的高度会不同
如何在流上操作以逐个生成表的行以显示表
更新
使用Fan Cheung解决方案(如下所述),使用RxJs很容易生成列。但是,是否也可以随后使用RxJs生成行(行数组),以便能够呈现如下所示的表
柱
具有顺序值索引字段的集合对该集合施加每秒500次写入的限制。子集合组如何影响该限制?例如,考虑这个数据模式:
[collection]
<documentId>
+ indexed field
- index-exempt field
[subcollection]
<documentId>
...
[products]
<productId&
我有一个文档集合,其中有些字段任何人都只能读,有些字段只有管理员才能读/写。我的规则看起来像
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /MyCollection/{document=**} {
allow read: if request.auth.token.admin == true;
allow write:
我正在使用swagger openAPI检索firestore的数据。我想从swagger而不是firestore应用安全性,当我这样做并执行GET request时,UI会显示存储在firestore上的数据,而不会显示未经验证的消息
我在firestore中有一个“用户”集合。每个文档都有一个用户名作为其密钥,并在其中包含一个名为“通知”的集合
下面的代码在应用程序加载时运行,大概是设置了一个事件侦听器来检测何时发生更改
const notificationRef=this.$db.collection(USERS).doc(this.currentUser().userName).collection(“通知”);
通知参考
.onSnapshot(快照=>{
snapshot.docChanges().forEach(更
我的Firestore数据库的结构如下
vendors (collection):
[
vendor_ids(docs): [
products(collection):[
product_ids(docs): {product_object} (data)
]
]
]
我想要像=>
firestore.collection(vendors).doc('{wildcard_vendor_id}').collections("products).
我是firestore的新手,不知道是否有人能告诉我这种解决方案是否适用于多对多关系。我有一个名册和学生的集合,这是多对多相关的。由于我最经常需要的关于学生的信息仅仅是他们的名字,是否可以在名册中存储一张学生地图,如{:“学生姓名”},因此如果我想检索名册中关于学生的更详细信息,我检索地图的键并遍历它们以分别检索每个学生的文档
我的解决方案是基于
我将非常感谢任何建议!谢谢您更新此功能,它工作正常。以下是我的云函数代码,用于在将来有人需要时更新运动员姓名:
export const onUser
我有一个在生产中使用Cloud Firestore的应用程序,在我的测试中,我的配额很好,但是当我在Google Play Store将我的应用程序投入生产时,我的配额很高,我看到161k API调用和100k索引写入操作,所以,这里的任何人都可以解释什么是索引写入操作?我在数据库中有索引,但我只写了一次=/有人吗?什么是云Firestore索引写入操作?有限制吗?它是免费的,欺骗的,昂贵的。当然,在任何firebase文档中都找不到。
我正在处理一个有趣的场景,我不确定它是否能工作,或者是否能很好地工作。在我目前的项目中,我正试图找到一种在firestore中使用地质点的有效方法。文档可以包含地质点字段的直截了当的方法非常简单,易于查询。但是,我必须为单个文档(文章)使用不同数量的地质点。这是因为特定内容可能需要在多个地理区域中可用
例如,一篇文章可能只需要在纽约、丹佛和西雅图提供。一般来说,如果我只想让这篇文章在西雅图发布,那么在每个位置使用一个地理点并按半径搜索是一项相当标准的任务,但现在它需要在另外两个地方发布
我目前看
这可能是一个很难回答的问题。我想使用firestore migrator:
我跟着安装
在我键入时的结尾处:
npm运行构建
我明白了:
firestoremigrate@0.3.0生成C:\Users\gogv\Desktop\firestore迁移器主机
tsc
然后终端重新加载,没有其他事情发生,我无法启动fire migrate命令。。(未找到命令)
你能告诉我该怎么做吗?
先谢谢你
祝你过得愉快你必须让npm知道它住在哪里。如果您对来自GitHub的某人的代码有问题,可以使用npm链接
考虑到多个客户端将向集合写入数据,我想知道对于给定集合中的2个或更多文档,Firestore ServerTimestamp是否可能完全相同。我这样问是因为Firestore没有为创建的文档提供自动递增的序列号,我们必须依赖ServerTimestamp来假设串行写入。我的用例要求对文档进行编号,或者至少具有“线性写入”模型的外观。我的应用程序是基于移动和网络的
(还有其他方法可以获得增量数字,例如使用FieldValue.Increment()方法的Firebase Cloud函数,我已经在这
我正在windows 10计算机上本地运行所有firebase模拟器。
但是,我单独运行functions emulator,因为functions目录位于不同的项目/位置。
似乎没有模拟触发器,我得到下面的警告。除了触发/后台功能外,其他功能都正常工作
有什么解决办法吗
i emulators: Starting emulators: functions
! hub: emulator hub unable to start on port 4400, starting on 4401 i
我想使用经过身份验证的用户的电子邮件域来限制对firestore中信息的访问
我唯一能想到的办法是:
match /organization-secrets/{org} {
allow read: if request.auth.email.split('@')[1] == org
}
由于电子邮件地址可以有多个@,因此很容易被类似以下内容的电子邮件欺骗:
hacker@bigcorp.com@h4xxor.net
是否有另一种方法限制基于域的访问?一种方法是创建一个云函数,在用户创
你好,新年快乐
我目前正在考虑制作一个简单的投票应用程序,但我不确定如何存储选择和计票
基本上,我有:
字符串:问题
字符串:uid
等
以下是选择
这里是计票
我正在考虑将选项和计数放入一个数组
选项:[“是”、“否”]
投票:[0,24]
因此,选择“是”的索引为0,它有0个投票,选择“否”的索引为1,它有24个投票,效果很好,但当涉及firestore安全规则时(如果我理解正确),我可以检查数组中是否始终有2个项目,但我无法检查每个项目的值,因此用户可以将其更改为[35,0]而不是
我想在Firestore数据库的任何级别创建或更新文档时,相应地设置createdAt和updatedAt
它似乎不支持多个级别,因此我最终编写了这样的代码(对于createdAt):
exports.onDocCreate=functions.firestore
.document(“{collection}/{docId}”)
.onCreate((快照,上下文)=>{
const{collection,docId}=context.params;
返回db.collection(colle
我有一个带触发器的函数,如下所示:
exports.eventDeleteListener = functions.firestore.document('events/{eid}').onDelete((doc, context) => {
exports.isDeletingFlagListener = functions.firestore.document('events/{eid}').onUpdate((change, context) => {
当我尝试上传到谷歌云
我正在创建一个Flatter web应用程序,我想将我的Flatter web项目连接到cloud firestore,是否有任何方法将我的项目连接到cloud firestore
我已尝试在pubspec.yaml中导入cloud_firestore:^0.12.5+2
由于op依赖于cloud_firestore>=0.3.0,该版本需要Flatter SDK,因此版本解决失败。您发现的版本仅针对iOS或Android
如果您的目标是网络,请使用
也可以在这里看到我昨天给出的类似答案:也许您
我试图匹配任何字母的标签字符串
我已经在多个re2测试站点上测试了^{1}\p{L}+$,它们都工作正常,但在firestore.rules中,我得到一个编译错误:
Error: Compilation errors in firestore.rules:
[E] 33:33 - Unexpected 'p'.
[E] 33:37 - Unexpected '+'.
[E] 36:1 - Unexpected '}'.
删除\p{L}可以消除错误,但就我所见,这应该是有效的
我的测试字符串(前
1 2 3 4 5 6 ...
下一页 最后一页 共 12 页