我正在努力理解一些 Firestore 安全概念。我想根据request.path属性设置规则。
我的规则是这样的:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.path[0]=='appUsers';
}
}
}
Run Code Online (Sandbox Code Playgroud)
...然后我使用AngularFire2添加这样的文档...
this.myAngularFirestore.doc('/appUsers/'+this.auth.auth.currentUser.uid).set({name: this.auth.auth.currentUser.displayName})
.then(()=>console.log('Added user'))
.catch(err=>console.log('Could not add user:', err.message));
Run Code Online (Sandbox Code Playgroud)
我认为根据文档这应该很简单,但我得到的只是错误 - Missing or insufficient permissions.
我知道我已正确登录,并且如果我打开安全性,我知道查询有效,那么我allow read,write: if true;在这里没有得到什么?不应该request.path[0]对appUsers这里的字符串求值,从而允许写入数据?
任何想法都被感激地接受,因为到目前为止我觉得这些规则在一起玩起来并不有趣。
干杯
firebase firebase-security angularfire2 angular google-cloud-firestore
我正在使用Angular / Electron构建一个应用程序。在 Angular 组件中,我有一个方法——handleData()定义一个对象——只是简单的数组、字符串、数字等,没有异步调用或任何类似的东西。那么这个对象的属性被用于创建和使用填充模板*ngFor和*ngIf。
在开发时,我在组件中有一个按钮,单击该按钮时handleData()直接调用并且一切正常 - 数据被创建,模板更新以反映它。有得到的东西建立这样我做一个简单的变化,使现在点击按钮通过发送消息IpcRenderer(使用IpcService中所述文章)...
onButtonClick(){
this.ipc.on('test-response', (e)=>{
this.handleData();
});
this.ipc.send('test-channel');
}
Run Code Online (Sandbox Code Playgroud)
这是在我的main.js,我回应它,发回一条消息......
ipcMain.on('test-channel', (e)=>{
e.sender.send('test-response');
});
Run Code Online (Sandbox Code Playgroud)
在这种情况下handleData()仍然会被调用,但现在 UI 不再更新。每当我更新通过或链接到模板的属性时,我都必须使用ChangeDetectorRef和手动调用。detectChanges*ngIf*ngFor
所以我的问题是,在 IPC 回调上调用方法与直接调用有什么不同?
这是同步/异步的事情吗?区?范围问题?
很高兴收到任何想法。
干杯
我有一个数据对象数组:
const arr = [
{type: 'CustomA', id: 1, label: 'foo'},
{type: 'CustomB', src: './images/some.jpg'}
{type: 'CustomX', firstName: 'Bob', secondName:'Smith'}
]
Run Code Online (Sandbox Code Playgroud)
这些对象始终具有 a type,但每个对象的其余属性将特定于该类型。
我设置了一个组件,可以接受并显示每个可能的数据对象,执行所需的任何解析和内部逻辑。
我想浏览该列表,检查type找到的每个对象并将相关组件添加到页面。所以,如果我发现type: 'CustomA我可以添加一个CustomADisplay向页面添加一个组件并向其传递要使用的数据对象。
当我事先不知道该列表中有多少项目或其类型是什么时,如何最好地实现这一目标?
基本上,我可以在应用程序运行时动态创建组件并将其添加到页面。
我目前正在玩ViewContainerRef,但这似乎需要模板中的目标元素,在我获得数据之前,我不会知道需要多少个目标元素。
希望这是有道理的。非常感激收到任何建议。
我正在使用 PHP 查询 mySQL 数据库中的三个表:
玩家
player_id | player_name
-----------------------
1 Tom
2 Dick
3 Harry
Run Code Online (Sandbox Code Playgroud)
游戏
game_id | game_name
-------------------
1 Tennis
2 Cricket
3 Rugby
Run Code Online (Sandbox Code Playgroud)
玩家关系
game_id | player_id
-------------------
1 2
1 3
2 3
3 2
3 3
Run Code Online (Sandbox Code Playgroud)
我想要一个返回玩家 ID 和姓名以及他们玩的游戏的查询。如果他们不玩游戏 - 就像汤姆 (1) 的情况一样 - 那么我想要 id 和名称以及 anull或0值。
期望的结果
player_id | player_name | game_id | game_name
---------------------------------------------
1 Tom null null
2 Dick 1 Tennis
2 Dick 3 Rugby
3 …Run Code Online (Sandbox Code Playgroud) 我在Mac上使用Automator来设置一个服务,将选定的文件夹作为参数传递给bash shell脚本.在脚本中我做:
for f in "$@"; do
printf "%q\n" "$f" | pbcopy
done
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
echo `pbpaste`
Run Code Online (Sandbox Code Playgroud)
我获取了带有空格escapeped(\)的所选文件夹的路径.然后我想使用这个路径cd进入该目录并做一堆其他的东西(创建一个空白的目录结构).我希望我能做到:
cd `pbpaste`
Run Code Online (Sandbox Code Playgroud)
但这不起作用.如果我手动键入路径的cd工作,所以我认为是数据类型或返回或某事的问题?
我承认我真的不知道这个剧本实际上做了什么,可能会发生这种错误,但是如果有人能解释这里发生了什么以及如何让它工作那将是伟大的,但更好的将是一个指向一个非常好的资源的指针,让一个完整的初学者开始学习shell脚本.我真的很喜欢进入这一点的想法,但我发现的所有资源要么是全部基础(cd,ls,pwd等),要么是真正的高级别,并假设一堆先前的知识.我真的很想与一些实际的例子一样,可以找到我更习惯(HTML/CSS/JS/AS3)的语言,如果这样的事情存在一个完整的语言参考.
欢呼任何帮助:)
据我了解(可能不太清楚,因为我今天才开始研究这个),Angular 内置了一些验证器,可以检查<input type='number'>.
我试图在我正在构建的应用程序中使其正常工作,但只有当输入完全为空时它才会无效。其他值有效,甚至超出我的最小/最大范围的数字。
我试图一次性复制它,但在这里它总是有效的。我在漫长的一天结束时 - 谁能解释一下我必须做什么才能使我的 plunk 中的字段在值 5-10时有效,在超出此范围、空或其他情况下无效。。
我正在尝试使用Angular和Electron构建一个超级简单的应用程序,并尽可能从头开始设置它(仅用于学习目的)。我已经根据本文建立了一个简单的 Angular 项目,它在浏览器中运行良好。
然后我安装了 Electron 并electron-main.js从这个快速开始添加
如果您认为可以提供帮助,您可以按原样克隆我的(非常基本的)项目:
git clone https://popClingwrap@bitbucket.org/popClingwrap/psutil-desktop.git
现在,当我运行electron electron-main.js应用程序启动并index.html加载时,但我的其他一切都失败了 - 我的main.js和模块位于node_modules
如果我用 WebPack 打包所有内容并使用结果,bundle.js那么一切都可以正常工作,但我不想在开发过程中捆绑所有更改。
我猜电子需要一些配置来告诉它在哪里可以找到所需的资源?
谁能详细说明为什么会出现这种情况以及如何解决?
此外,如果有人对帮助构建/调试电子应用程序的工具有任何重要提示,那将是很棒的!我过去已经建立了工作项目,但它们都是从 开始的Angular-CLI,我很想以最小的膨胀来完成这个项目,并且实际上尝试了解该过程的基础知识。
提前干杯