【问题标题】:Node.js Restify send response when value changedNode.js Restify 在值更改时发送响应
【发布时间】:2015-05-15 20:05:32
【问题描述】:

我设置了一个 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);
    */}
}

【问题讨论】:

  • 这句话真的很难理解,伙计。请发布一些代码...如果订单处理正确,供应商是否会发布到您的 API 并获得回复,或者他们是否定期“检查”以查看订单是否已处理?我真的不明白这里的整个工作流程
  • 当我尝试这样做时,我显然很累。让它与缓存响应对象一起工作。
  • 所有供应商发布到我的 IP 并立即得到回复。他们中的一些人会定期检查状态更新,而一些我会在状态更新时发布给他们。我遇到问题的供应商想发布但在商店处理订单之前没有收到 http 响应
  • 现在一切正常吗?
  • 是的。很抱歉浪费时间。在搜索数组时,我没有包含 [0] 以返回匹配 id 的第一顺序,因此它返回了另一个数组而不是对象。

标签: node.js caching response forward restify


【解决方案1】:

在搜索数组时我没有包含 [0] 以返回第一顺序匹配的 id,所以它返回另一个数组而不是对象

【讨论】:

    猜你喜欢
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    相关资源
    最近更新 更多