使用Hapines js的POST请求

时间:2017-05-16 06:43:10

标签: javascript json http-post hapijs

所以今天我一直在努力解决这个问题。但无法找到有关它的文件。

我有一个Vue.js / ES6前端和一个带有Hapines的Node.js后端。

我想通过从前端到后端的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

是否有人可以帮我解决这个问题,或者有哪些形式的文档可以更好地解释Hapines的POST请求,然后是Hapines Github页面?

所有帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要在let options = {...}回调中移动appClient.request(...)connectconnect异步执行并使用callback pattern,这是javascript中的常见模式。由于scoping works inside of functions的原因,您还需要在函数顶部声明对this的引用。

在您的情况下,您在尝试连接到服务器之前尝试发出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);
        });
    });
}