我是流星的新手,我想使用流星制作一个注册表格,我卡在findOne
和subscribe/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做断点后,cust
有undefined
值。
请帮帮我,如何解决这个功能?
感谢
答案 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;
}