2017-05-16 47 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); 
     }); 
    }); 
}