我正在使用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)
那么我想要你们呢?
ps:我认为很明显为什么我不想保存配置文件下的所有额外字段;)
在文档中指出,您可以通过将字符串与另一个字符串值进行比较来进行查询,例如:
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) 用这个让我失去理智......
尝试读取文件时,在meteor上获取"fs未定义":
var data = fs.readFileSync(filepathHidden);
Run Code Online (Sandbox Code Playgroud)
我有这个包:cfs:filesystem 0.1.2上Meteor 1.1.0.2
这里有趣的是,如果我在流星shell fs中写入它打印对象,它似乎有很多功能等东西.但这里的事情是,在流星shell中编写fs后,我的代码开始工作了!?如果我关闭流星服务器,然后再次启动它我的服务器代码一直唠叨,直到我在流星shell中运行fs ...
有人可以解释一下这种情况会发生什么吗?以及如何在我的代码中实现相同的功能..