node.js - Firestore 安全规则 : How to enforce the number of fields CREATED in a Firestore document thru security rules?

标签 node.js google-cloud-firestore firebase-security

我无法使用 Firestore 安全规则限制创建的文档中的字段数量。 https://firebase.google.com/docs/firestore/security/rules-structure

我的用户文档中有 7 个字段。我想将任何文档 CREATE 尝试限制为我期望的字段数量。我已将数字设置为 100,这显然不是我故意发送失败的数字。我预计 100 次会失败,但事实并非如此。

match /users/{uid} {
  // Applies to writes to nonexistent documents
  allow create: if request.resource.data.size() == 100;
}

我还尝试了以下方法,将 size 属性直接放置到资源对象上,但没有成功。

允许创建:if request.resource.size() == 100;

这是尝试 CREATE 操作的代码;

const DEFAULT_systemRole = 'User';
  const DEFAULT_disabled = false; 
  // creates up a static sentinel value to be set on the Firestore server
  var serverTimestamp = admin.firestore.FieldValue.serverTimestamp()
  admin.firestore().collection('users').doc(req.body.uid).set({

    // sent from client
    usernameSlug: req.body.usernameSlug,
    username: req.body.username,
    email: req.body.email,

    // set only here on server
    systemRole: DEFAULT_systemRole,
    disabled: DEFAULT_disabled,
    dateModified: serverTimestamp,
    dateCreated: serverTimestamp,

  }).then(function() {
    console.log("Successfully created FireStore user");
  }).catch(function(error) {
    console.log("Error creating user:", error);
    throw(error)
  }) 

最佳答案

我刚刚在模拟器中快速测试了这一点,它似乎对我有用:

enter image description here

所以上述安全规则需要2个字段。

当我编写只有一个字段的新文档时(在屏幕截图中),写入失败。

当我将规则更改为仅需要一个字段时,相同的写入会成功。

关于node.js - Firestore 安全规则 : How to enforce the number of fields CREATED in a Firestore document thru security rules?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55525444/

相关文章:

java - 使用 Firebase Firestore 中两个集合的数据填充 Androidx RecyclerView 和 CardView

reactjs - Firebase 身份验证状态在客户端上保留,但在硬刷新时不保留

android - OrderByChild() 在 Android 客户端中不工作

javascript - Firebase:异步/等待事务

php - 使用 http 请求在 php 旁边使用 node.js 是否安全?

javascript - 如何使用 JavaScript 解码 Node-Red 中 msg.payload 内的 HTML 实体?

javascript - 在node.js mySQL中插入数组作为参数进行查询

c# - 为什么使用 Google Cloud Firestore 1.0.0-beta05 C# SetAsync 时会出现 Grpc.Core.RpcException StatusCode=Unavailable, Detail ="Connect Failed"?

firebase 安全权限不起作用

javascript - Webpack 4 和 Uglify 插件(TypeError : Cannot read property 'length' of undefined)