在我的一些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
您可以看到为什么这种情况发生在此片段中的检查包中.
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); }