javascript - 用于等待数据库变量更改然后在之后执行某些操作的 meteor 技术/模式

标签 javascript meteor

我正在创建一个 Meteor Web 应用程序,用户可以订购商品,但用户必须等待后端人员更改订单状态。

用户提交订单,屏幕上显示消息订单待处理。

我有一个特定的订单对象,其中有一个名为 status 的变量,该变量设置为 pending

我们现在必须等待管理员从后端将状态更改为已接受已拒绝

如果订单状态更改为已接受,我需要根据订单 ID 重定向到订单已处理页面。

我的问题是我不知道如何等待订单状态更改。

这是我现在所拥有的

Meteor.call('placeOrder',cartSession,deliveryDetailsId,payment,function(error,result){
      if(error){
          console.log('ERROR :', error);
         }else{
           console.log('response:', result);
           var pendingOrder = Orders.findOne({_id:result});
           console.log("pendingOrder");
           console.log(pendingOrder);
           //the order status of the pendingOrder is 'pending' at this moment
           $('#order-processing').text('order is processing');
           //i must now wait for the status to change to accepted or declined
         }
    });

作为 Marius Darila 的评论,我添加了订单出版物

Meteor.publish('userorders', function () {
  if(this.userId){
    return Orders.find({userId:this.userId});
  }
  this.ready();
});

用户无法插入、更新或删除订单,这只发生在服务器端

我在我的meteor方法回调函数中添加了这段代码

if(pendingOrder.orderStatus =="accepted"){
    Router.go('/orderProcessed',{orderId:pendingOrder._id})
  }

下面的 Marius 表示,如果 orderStatus 更改,此代码将重新运行, 但代码没有运行

Marius Darila 如何帮助我回答这个问题

因为我从当前用户订单的服务器返回一个 ID

我设置了一个Session.set("orderId", orderId)

然后在模板帮助程序 orderstatus 中,我们在订单数据库中找到当前订单,并在此帮助程序中完成我们的逻辑。

如果订单处于待处理状态,则显示订单处于待处理状态 当订单被接受时,将用户引导至 orderConfirmed 页面。

最佳答案

Db 是一个响应式(Reactive)数据源,因此在您的客户端代码中应该包含如下内容:

    var order = Orders.findOne({_id:result});
    if(order.accepted == 1){
        Router.go("someUrlName", {product: order._id});
    }else{
        $('#order-processing').text('order is processing');
   } 

此示例使用iron-router进行重定向。

关于javascript - 用于等待数据库变量更改然后在之后执行某些操作的 meteor 技术/模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943620/

相关文章:

javascript - meteor 从出版物中返回空光标

javascript - DOM 元素存在,jQuery 无法操作它

Meteor NPM - 无法导入 owl.Carousel

javascript - 将日期格式从 M/D/YYYY 转换为 Month D, YYYY

javascript - extjs 按钮范围

meteor - Meteor 中的 JSON 端点

javascript - Meteor:设置 Handlebars 变量 true/false

javascript - 如何在字符串中传递字符串?

Javascript OOP 事件处理程序不工作

javascript - 添加缓存文件 .appcache 停止 jquery ajax 调用