我在客户端有以下代码:
Meteor.methods({
getOldTests: function (m_user, test_id, course, language) {
var tests = Tests.findOne({email: m_user.email, course_en: course, test_id: test_id});
if (tests) {
console.log(tests);
return Questions.find({course_en: course, variant: tests.variant, language: language});
} else {
return false;
}
},});
服务器端具有以下方法:
data
变量reactive-dict
为Meteor.call()
那么,为什么在客户端的setw()
函数内没有执行任何操作(没有控制台输出),而实际上它在服务器端调用该方法(控制台输出中间结果)?
谢谢,
答案 0 :(得分:1)
看起来您正在使用pub-sub更合适的方法:
服务器强>
Meteor.publish('getOldTests',function (m_user, test_id, course, language) {
var tests = Tests.findOne({email: m_user.email, course_en: course, test_id: test_id});
if (tests) return Questions.find({course_en: course, variant: tests.variant, language: language});
else this.ready();
});
<强>客户端:强>
Meteor.subscribe('getOldTests',m_user, test_id, course, language);
答案 1 :(得分:0)
表单服务器端的数据库提取和API调用应包含在光纤内。试试这个:
Future = Npm.require('fibers/future');
getOldTests: function (m_user, test_id, course, language) {
var myFuture = new Future();
var tests = Tests.findOne({email: m_user.email, course_en: course, test_id: test_id});
if (tests) {
console.log(tests);
myFuture.return(Questions.find({course_en: course, variant: tests.variant, language: language}));
} else {
return false;
}
return myFuture.wait();
}
此question可能会有所帮助。