2017-05-16 45 views
0

所以我一直在爲今天的這個問題而苦苦掙扎。但是找不到關於它的propper文檔。Hapines的POST請求js

我有一個Vue.js/ES6前端和一個Node.js後端與Hapines。

我在想要通過從前端到後端的POST請求將數據插入數據庫的位置。

目前我有這樣的代碼

前端:

saveOrder(){ 
    let Nes = require('nes'); 
    let appClient = new Nes.Client('ws://localhost:3000'); 
    appClient.connect((err) => { console.log(err); }); 

    let options = { 
     path: '/order', 
     method: 'POST', 
     payload: this 
    }; 

    appClient.request(options, (err, payload) => { 
     console.log(payload); 
    }); 
} 

後端

server.route({ 
    method: 'POST', 
    path: '/order', 
    config: { 
     id: 'order', 
     handler: (request, reply) => { 
      return reply('Request came through'); 
     } 
    } 
}) 

這是JSON對象我發送到服務器

{ 
    "path": "/order", 
    "method": "POST", 
    "payload": { 
    "products": [{ 
     "id": 2, 
     "plu": "1AB23CD", 
     "name": "Some name", 
     "description": "Some description", 
     "barcode": "123456789", 
     "sellUnitID": 1, 
     "taxGroupID": 1, 
     "labelID": 1, 
     "defaultPrice": 1, 
     "sellAmount": 1, 
     "archived": 0 
    }] 
    } 
} 

當我撥打電話時,它只返回undefined

有沒有人可以幫我解決這個問題,或者有某種形式的文檔可以更好地解釋POST請求和Hapines,然後是Hapines Github頁面?

所有幫助將不勝感激!

回答

0

您需要將let options = {...}appClient.request(...)移到connect回調中。 connect異步執行並使用callback pattern,這是javascript中的常見模式。您還需要在函數的頂部聲明this的引用,這是因爲scoping works inside of functions

就你的情況而言,你正在試圖在它實際連接到你的服務器之前發出一個websocket請求。

function saveOrder() { 
    let self = this; 

    let Nes = require('nes'); 
    let appClient = new Nes.Client('ws://localhost:3000'); 

    appClient.connect((err) => { 

     if (err) { 
      console.log(err); 
      throw err; 
     } 

     let options = { 
      path: '/order', 
      method: 'POST', 
      payload: self 
     }; 

     appClient.request(options, (err, payload) => { 
      console.log(payload); 
     }); 
    }); 
}