所以今天我一直在努力解决这个问题。但无法找到有关它的文件。
我有一个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页面?
所有帮助将不胜感激!
答案 0 :(得分:0)
您需要在let options = {...}
回调中移动appClient.request(...)
和connect
。 connect
异步执行并使用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);
});
});
}