小编leh*_*htu的帖子

Accounts.onCreateUser在创建新用户时添加额外属性,良好做法?

我正在使用Accounts.createUser()创建新用户,如果您没有做任何花哨的事情,它会正常工作.但我想向新用户添加一些未在文档中列出的其他字段.这是我的代码:

var options = {
    username: "funnyUserNameHere",
    email: "username@liamg.com",
    password: "drowssap",
    profile: {
        name: "Real Name"
    },
    secretAttribute: "secretString"
};

var userId = Accounts.createUser(options);
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我已将secretAttribute添加到我的选项对象中.因为没有记录,所以不公平地说它不是在用户对象下添加我的属性.

所以我用谷歌搜索并发现这样的东西可能会起作用:

Accounts.onCreateUser(function(options, user) {
    if (options.secretAttribute)
        user.secretAttribute = options.secretAttribute;

    return user;
});
Run Code Online (Sandbox Code Playgroud)

是的!这是有效的,但总有BUTT ..*但是......在这之后,它不再在用户对象下保存配置文件.然而,这使它工作:

Accounts.onCreateUser(function(options, user) {
    if (options.secretAttribute)
        user.secretAttribute = options.secretAttribute;

    if (options.profile)
        user.profile = options.profile;

    return user;
});
Run Code Online (Sandbox Code Playgroud)

那么我想要你们呢?

  1. 我想知道为什么onCreateUser在我的情况下丢失了配置文件(在上面的修复之前)?
  2. 我的做法是好的做法吗?
  3. 是否有更好的解决方案在创建用户对象时为其添加额外属性?

ps:我认为很明显为什么我不想保存配置文件下的所有额外字段;)

meteor meteor-accounts

10
推荐指数
1
解决办法
7750
查看次数

Firestore 查询角色?

文档中指出,您可以通过将字符串与另一个字符串值进行比较来进行查询,例如:

citiesRef.where('name', '>=', 'San Francisco');
citiesRef.where('state', '>=', 'CA').where('state', '<=', 'IN');
Run Code Online (Sandbox Code Playgroud)

然后文档中的角色部分展示了如何在 Firestore 文档中应用角色。然而,它没有显示如何查询这个..但如上面的示例所示,这应该像下面这样工作:

citiesRef.where(`roles.${user.uid}`, '>', '');
Run Code Online (Sandbox Code Playgroud)

所以上面的查询应该返回所有大于空字符串的值的文档,对吧?

在我的代码中,我有包含一个文档的组织集合:

{
  "name": "MyAmazingCompany",
  "roles": {
    "my-user-uid": "owner"
  }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试查询我担任以下角色的组织:

organizationsRef.where(`roles.${user.uid}`, '>', '');
Run Code Online (Sandbox Code Playgroud)

我将Uncaught Error in onSnapshot: Error: Missing or insufficient permissions.进入浏览器控制台(使用 firebase npm 包版本 5.1.0 并尝试使用 5.0.3)。

只是为了确保我应该有权访问该文档,测试了以下查询,它有效并且返回该组织。

organizationsRef.where(`roles.${user.uid}`, '==', 'owner');
Run Code Online (Sandbox Code Playgroud)

那么有什么问题吗?

还有人声称它应该有效:Firestore select where is not null

这是我的规则:

service cloud.firestore {
  match /databases/{database}/documents {
    function isSignedIn() {
      return request.auth != null;
    }

    function …
Run Code Online (Sandbox Code Playgroud)

javascript firebase google-cloud-firestore

7
推荐指数
1
解决办法
1252
查看次数

Meteor:"ReferenceError:未定义fs"

用这个让我失去理智......

尝试读取文件时,在meteor上获取"fs未定义":

var data = fs.readFileSync(filepathHidden);
Run Code Online (Sandbox Code Playgroud)

我有这个包:cfs:filesystem 0.1.2Meteor 1.1.0.2

这里有趣的是,如果我在流星shell fs中写入它打印对象,它似乎有很多功能等东西.但这里的事情是,在流星shell中编写fs后,我的代码开始工作了!?如果我关闭流星服务器,然后再次启动它我的服务器代码一直唠叨,直到我在流星shell中运行fs ...

有人可以解释一下这种情况会发生什么吗?以及如何在我的代码中实现相同的功能..

node.js meteor meteorite

3
推荐指数
1
解决办法
8406
查看次数