Meteor订阅未定义

时间:2013-12-18 14:02:21

标签: javascript meteor

我是流星的新手,我想使用流星制作一个注册表格,我卡在findOnesubscribe/publish。 这是我的`collection.js常见:

User_Customer = new Meteor.Collection("USER_CUSTOMER");
Customer = new Meteor.Collection("CUSTOMER");

这是我的publish.js /server

Meteor.publish("CUSTOMER", function() {
    return Customer.find();
});

Meteor.publish("USER_CUSTOMER", function() {
    return User_Customer.find();
});

这是我订阅和查找一个/client的函数:

function isAvailableForUserRegister(email,identiy,phone){
    Meteor.subscribe("CUSTOMER", function(){
        var cust = null;
        cust = Customer.findOne({Identity: identiy});
        if(cust != null){
            Meteor.subscribe("USER_CUSTOMER", function(){
                var uc1 = null;
                uc1 = User_Customer.findOne({Email: email});
                if(uc1 != null){
                    var uc2 = null;
                    uc2 = User_Customer.findOne({Phone: phone});
                    if(uc2 != null)
                        return true
                    else
                        return false;
                }else return false;
            });
        }else return false;
    });
}

如果收藏中已存在电子邮件/身份/电话,则此函数isAvailableForUserRegister将会返回:

Identity in Customer
Email in User_Customer
Phone in User_Customer

问题是进程没有继续进入第二个订阅,在我使用我的chrome做断点后,custundefined值。 请帮帮我,如何解决这个功能?

感谢

2 个答案:

答案 0 :(得分:1)

我认为这是一个异步问题,订阅还没准备好,试试这个



Meteor.subscribe("CUSTOMER").ready();
Meteor.subscribe("USER_CUSTOMER").ready();




答案 1 :(得分:0)

您只需在客户端内拨打Meteor.subscribe一次。

客户端代码:

Meteor.subscribe("CUSTOMER");
Meteor.subscribe("USER_CUSTOMER");

function isAvailableForUserRegister(email,identiy,phone){
  var cust = Customer.findOne({Identity: identiy});
  if(cust === null) {
    return false;
  }
  var uc1 = User_Customer.findOne({$or: [
    {"Email": email}, 
    {"Phone": phone}
  ]);
  return uc1 !== null;                
}