gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:37:18 25 4
gpt4 key购买 nike

我正在创建一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com