2017-09-27 99 views
1

試圖找出如何從數據庫中獲取單個對象,我知道它的關鍵,在ReactJS中。通過反應中的ID查詢

import { db } from 'baqend'; 

    componentWillMount() { 
    db.Companies.load('16747fce-f0b1-422b-aa60-220c2dccac58') 
     .then((response) => { 
     console.log(response); 
    }); 
    } 

我得到這個錯誤:

TypeError: Cannot read property 'load' of undefined 
EditCompany.componentWillMount 
src/containers/EditCompany.js:33 
    30 | } 
    31 | 
    32 | componentWillMount() { 
> 33 | db.Companies.load('16747fce-f0b1-422b-aa60-220c2dccac58') 
    34 |  .then((response) => { 
    35 |  console.log(response); 
    36 | }); 

我想直接在組件中做到這一點,但該項目使用入門作出反應。這就像一個查看公司的詳細信息頁面。

回答

1

原因是,數據庫尚未連接,您必須等待連接,然後才能請求數據。 有兩種方法可以解決這個問題。第一個選項是簡單地調用準備功能的數據庫對象提供這樣

db.ready().then((db) => { 
    db.Companies.load(.... 
}) 

我假設你不使用我們的反應 - 終極版起動,但一個簡單的創建反應的應用程式。對於這種情況,我們剛剛創建了react-baqend-provider,但尚未記錄,但您可以安裝它。

$ yarn install react-baqend-provider 

然後使用baqendProvider,它得到一個數據庫連接實例,如果你想在一個數據加載環繞你的應用程序在app.js或index.js

import { BaqendProvider } from 'react-baqend-provider' 

<BaqendProvider db={db.connect('codetalks17', true)}> 
    <YourApp /> 
</BaqendProvider> 

現在您的組件只需將您的組件包裝在react-baqend-provider提供的Baqend Higher Order Component中。該組件將正確的數據庫實例傳遞給組件屬性。

import { baqend } from 'react-baqend-provider' 
class EditCompany extends Component { 
    componentDidMount() { 
    const { db } = this.props 
    db.Companies.load(....... 
    } 
} 
export default baqend(EditCompany) 

希望這有助於

+0

的等待連接做好準備是我的問題。我正在使用你的啓動器,這太棒了......但是我想玩弄一些查詢來驗證我的數據建模,並且現在想保持這種狀態。謝謝! –

+0

如果有人發現這個......更容易的是在react-redux-starter中複製這些模式,並在那裏修改查詢,然後使用redux記錄器來確保您獲得了您認爲的所有內容。 –