在我的一些 Meteor 方法中,我从客户端发送 Mongodb ObjectId 作为参数。我想通过 Meteor 的 check() 系统运行这些,但我似乎找不到与它们成功匹配的任何东西。
我试过了
var someObjectId = Meteor.Collection.ObjectId();
check(someObjectId, Meteor.Collection.ObjectId()) // fails
check(someObjectId, { _str : String }) //fails
check(someObjectId, String) //fails
非常感谢任何帮助!
最佳答案
代替:
check(someObjectId, Meteor.Collection.ObjectID());
尝试不带括号:
check(someObjectId, Meteor.Collection.ObjectID);
编辑-
请注意,此检查的错误消息并不理想。
check({}, Meteor.Collection.ObjectID);
// Error: Match error: Expected
你可以假设消息应该是这样的
// Error: Match error: Expected ObjectId, got object
您可以在 check 包的这个片段中看到为什么会发生这种情况。
https://github.com/meteor/meteor/blob/devel/packages/check/match.js
if (pattern instanceof Function) {
if (value instanceof pattern)
return;
// XXX what if .name isn't defined
throw new Match.Error("Expected " + pattern.name);
}
Meteor.Collection.ObjectID
没有 name
属性。关于mongodb - meteor .js : How to run check() when arguments are Mongodb ObjectId's?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20850227/