我有一个Meteor项目,我正在使用audit-argument-check。我收到一条错误消息
Error: Did not check() all arguments during publisher 'document
我知道这与audit-argument-check无法检查所有参数有关。但就我而言,我检查了所有这些。具体来说,我已经定义了一个集合'documents'并附加了一个SimpleSchema。作为铁路由器的一部分,我有以下内容:
Router.route('customerDocumentShow', {
template: 'customerDocumentShow',
path: 'customer/documents/:_id',
waitOn: function () {
return Meteor.subscribe('document', this.params._id);
},
data: function () {
return Documents.findOne(this.params._id);
}
});
所以我只传递了documentId(this.params._id)。在服务器上,我定义了一个方法:
Meteor.methods({
documentsReadMethod: function(documentId){
check(documentId, String);
var documentItem = Document.findOne(argument);
if (!documentItem) {
throw new Meteor.Error(500, 'Error 500: Not Found', 'No documents found.');
}
return documentItem;
}
});
所以我在服务器方法中检查documentId。所以不确定为什么我收到此错误消息。
注意:我不能完全确定的一件事是我需要如何调用此方法(现在,它是documentsReadMethod_。我没有明确调用(在客户端上):
Meteor.call(documentsReadMethod, this.params_id);
因为我正在使用autoform,collection2和simpleschema。我整个周末都在度过,但不知道。有什么想法吗?
注意:代码位于github:https://github.com/wymedia/meteor-starter-base
答案 0 :(得分:1)
问题在于发布。你没有在这里查看id:
https://github.com/wymedia/meteor-starter-base/blob/master/server/publications/documents.js#L16
只需添加check(id, String);
第16行即可。
答案 1 :(得分:0)