小编Mar*_*nna的帖子

将".indexOn":".value"添加到Firebase规则中

我正在研究AngularJS和Firebase,我正在玩一个简单的ChatApp,只是为了理解代码.

我的Firebase数据库结构如下:

"chat": {
    "messages": {
        "chat1": { [ list of messages ] },
        "chat2": { [ list of messages ] }
    },
    "rooms": {
        "chat1": {
            "users": {
                "user1": true,
                "user2": true
            }
        },
        "chat2": {
            "users": {
                "user2": true,
                "user3": true
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

由于Firebase保护规则,我无法在用户节点中添加聊天链接,因此我必须使用orderByChild()应用程序启动时的查询来执行Firebase查询以检索用户的聊天室.

使用Firebase比使用以下方法检索所有聊天更简单:

var chatLink = firebase.database().ref('chat/rooms');
chatLink
  .orderByChild('users/' + userId)
  .equalTo(true)
  .once('value', function(chatSnap){

      /* Do Some Stuff Here */

  });
Run Code Online (Sandbox Code Playgroud)

每件事都运作良好,但我在控制台收到警告:

FIREBASE警告:使用未指定的索引.考虑在/ chat/rooms中添加".indexOn":"users/{userId}"以符合您的安全规则,以获得更好的性能

在网上搜索,我发现对于变量orderByChild()查询,我可以使用.indexOn: .value我的Firebase规则.

我试图添加此规则:

{ …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs firebase firebase-security firebase-realtime-database

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

使用 Webpack 导入时出现意外的未定义

我遇到了一个以前从未发生过的问题:我正在使用 Webpack + Babel 7 编译一个基本的入门浏览器 Web 应用程序(使用 React)。我有三个不同的文件:

  1. withAuth.jsAuth 高阶组件
  2. NavBar.js导航栏组件
  3. Login.js登录表格

如果我在导航栏中导入withAuthHOC 一切正常,但如果我withAuth在 Login.js 文件中导入组件,它会返回undefined

/** withAuth.js */

console.log('withAuth Loaded');

const withAuth = Child => ChildProps => (
    <AuthContext.Consumer>
        { authClient => <Child {...ChildProps} authClient={authClient} }
    </AuthContext.Consumer>
)

export { withAuth };


/** NavBar.js */
import { withAuth } from 'HOC/Auth';

console.log('NavBar Loaded', withAuth); // <- My HOC

const NavBarComponent = (authClient) => { /* ... My Code ... */ …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs webpack

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