我已阅读文档。并研究了一些check package
教程。 meteor docs,尝试再次安装检查包atmospherejs,并查看它的使用方法。但
每次我尝试类似的事情:
check("this is string",String); //return undefined
var objectTest = { some : 0 };
check(objectTest, Object); //undefined
check(objectTest.some, Number); //undefined
它始终返回undefined我不知道为什么,check
函数如果我在chrome控制台上写一下它返回
function (value, pattern) { // 19
// Record that check got called, if somebody cared. // 20
// // 21
// We use getOrNullIfOutsideFiber so that it's OK to call check() // 22
// from non-Fiber server contexts; the downside is that if you forget to // 23
// bindEnvironment on some random callback in your method/publisher, // 24
// it might not find the argumentChecker and you'll get an error about // 25
// not checking an argument that it looks like you're checking (instead // 26
// of just getting a "Node code must run in a Fiber" error). // 27
var argChecker = currentArgumentChecker.getOrNullIfOutsideFiber(); // 28
if (argChecker) // 29
argChecker.checking(value); // 30
try { // 31
checkSubtree(value, pattern); // 32
} catch (err) { // 33
if ((err instanceof Match.Error) && err.path) // 34
err.message += " in field " + err.path; // 35
throw err; // 36
} // 37
}
所以功能它在那里,但我不知道如何使用它...你知道为什么它返回undefined? (顺便说一下我google"流星检查方法返回undefined"没有成功)
感谢您的支持。
//我是否因为某种原因使用铁路线
//我没有使用Metero.publish
或Meteor.methods
答案 0 :(得分:1)
check
不会返回任何内容。这就是为什么它似乎总是未定义的。
如果值与模式不匹配,则抛出异常。如果值与模式匹配,那么它不会。
因此,您不必使用if (check(...)) {
,而是编写如下代码:
function sample(name) {
check(name, String);
// code down here won't run if name is not a string
return name.toUpperCase();
}