我有一个nodejs + restify服务器设置。它用于在线订购api,接受来自不同供应商的在线订单,并将它们转发到相关商店和pos终端。
这适用于大多数供应商。我遇到了想要发布到我的服务器的特定供应商的问题,我只应该在商店处理订单时使用http.200回复。这在繁忙时段期间大约需要5秒钟。
目前该流程的工作原理如下: 1.供应商向API发布交易。 2. API将订单写入数据库 3.定期存储新订单和下载(如果存在)。 4.将更新订单状态存储为已处理完成。 5. Api通过供应商更新订单状态。
我想要实现的是供应商将发布到/ orders / {orderid},但在商店发布到/ status / {orderid}之前我不会发回回复
我尝试使用orderid作为键创建一个键值存储,并且响应对象具有值,但我似乎无法使用此方法发送响应。
代码: 是什么:
//Vendor posts new order
//Body contains json data { 'orderid' : 'xxxx', 'storeid': 'ABC', 'lines' : []}
server.post('/order/:vendor',function(req,res,next){
//write order to database on success call res.send(200);
});
//Vendor queries order status
server.get('/orderstatus/:orderid',function(req,res,next){
//read order status from database on return result call res.send({'orderid' : 'xxxx', 'status': 5});
}
//Store checks for orders
server.get('/store/orders/:storeid',function(req,res,next){
// get all new orders (status = 0) and return with res.send({'orders': [{ 'orderid' : 'xxxx', 'storeid': 'ABC', 'lines' : []}]});
}
//Store Updates order status
server.put('/orderstatus/:vendor/:orderid/:status',function(req,res,next){
/*update order with new status. if vendor requires post from this api then use client to
update status with vendor. call res.rend(200);
*/
}
//THIS IS FOR NEW CLIENT
var ordersforyyy =[]
//changed Vendor post to:
server.post('/order/:vendor',function(req,res,next){
if (req.params.vendor === 'yyy') {
//write order to database. then:
ordersforyyy.push({orderid : req.body.orderid, response: res});
//Do not send response 200
}
else {//write order to database on success call res.send(200);}
});
server.put('/orderstatus/:vendor/:orderid/:status',function(req,res,next){
if (req.params.vendor === 'yyy') {
var response = orders.filter(function(item){ return item.orderid === req.params.orderid; })[0];
response.response.send(200);
}
else {
/*update order with new status. if vendor requires post from this api then use client to
update status with vendor. call res.rend(200);
*/}
}
答案 0 :(得分:0)
在搜索数组时,我没有包含[0]来返回第一个匹配的id,所以它返回了另一个数组而不是对象