2015-11-19 71 views
3

我是新來的falcor數據抓取框架。我很少例如試過當我在服務器端請求像在Falcor中如何使用數據庫?

model.get(["contacts", {0..2}, "name"]) 
    .then(response => { 
     this.state.list = response.json.contacts; 
     this.setState(this.state); 
     }); 

let data = { 
    contacts: [ 
     {name: "ABC"}, 
     {name: "XYZ"}, 
     {name: "PQR"} 
    ] 
}; 

let contactsRouter = Router.createClass([ 
    { 
     route: 'contacts[{integers:contactIndexes}]', 
     get: (pathSet) => { 
      let results = []; 
      pathSet.contactIndexes.forEach(contactIndex => { 
       if (data.contacts.length > contactIndex) { 
        results.push({ 
         path: ["contacts", contactIndex, "name"], 
         value: data.contacts[contactIndex].name 
        }); 
       } 
      }); 
      return results; 
     } 
    }, 
    { 
     route: 'contacts.add', 
     call: (callPath, args) => { 
      var newContact = args[0]; 

      data.contacts.push({name: newContact}) 
      return [ 
       { 
        path: ['contacts', data.contacts.length-1, 'name'], 
        value: newContact 
       }, 
       { 
        path: ['contacts', 'length'], 
        value: data.contacts.length 
       } 
      ] 
     } 
    } 
]); 

我得到的數據&能夠做其他操作了。 我的問題是我想要做的MongoDB相同的CRUD操作,而不是從

data.contacts

如何構建JSON Graph對象的數據應該來自於數據庫架構。希望我的問題被清除。

回答

2

最簡單的方法是簡單地做路由的get函數內部數據庫查詢:

{ 
    route: 'contacts[{integers:contactIndexes}]', 
    get: (pathSet) => { 
     const data = db.get('myModel', (err, res) => { 
      return res 
     }) 
     let results = []; 
     pathSet.contactIndexes.forEach(contactIndex => { 
      if (data.contacts.length > contactIndex) { 
       results.push({ 
        path: ["contacts", contactIndex, "name"], 
        value: data.contacts[contactIndex].name 
       }); 
      } 
     }); 
     return results; 
    } 
} 

做了一個簡單repo使用Falcor和CouchDB的。理解MongoDB應該如何完成應該就足夠了。

相關問題