meteor fs.collection 插入图像后出现 500 错误
meteor fs.collection 500 error after insert image
我正在尝试使用 FS.Collection2 库在流星中上传工作图像 https://github.com/CollectionFS/Meteor-CollectionFS
我设法上传图片并显示它们,但是在我插入图片后出现以下服务器错误(我只插入,我不更新任何东西)
Exception while invoking method '/cfs.images.filerecord/update' Error: Did not check() all arguments during call to '/cfs.images.filerecord/update'
这是我的代码:
插入:
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function (err, fileObj) {
console.log(err);
});
});
collection:
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images")]
});
if (Meteor.isServer) {
Images.allow({
insert: function (fileID, doc) {
return true;
},
update: function (fileID, doc) {
return true;
},
remove: function(userId, doc) {
return false;
},
download: function (fileID, doc) {
return true;
}
});
}
FS 包版本:
cfs:filesystem 0.1.1
cfs:standard-packages 0.5.3
谢谢希望你能给我指明正确的方向
我添加了错误的屏幕截图。
在你的 meteor 应用程序上试试这个,告诉我是否有效,
首先,为了在 /lib/collections.js folder
上更好地声明 Collections,使用这个。
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images")]
});
if(Meteor.isClient) {
Meteor.subscribe('Images');
}
同样在 meteor 控制台上,meteor remove autopublish insecure
,有了这个你就拥有了所有 collection 安全,并且第一件事 meteor 加载它 /lib
,文件夹所以 collection 现在可以在 client/server
上使用
现在 /server/collections.js
Meteor.publish('Images', function(){
return Images.find();
});
Images.allow({
insert: function(userId, doc) { return true; },
update: function(userId,doc) { return true; },
remove: function(userId,doc) { return false; },
download: function(userId, doc) {return true;},
});
现在/client/insertingImages.html
,使用一些简单的例子
<template name="example">
<input id="addImage" type="file">
<button type="submit" id="loadImage"> Click to add Image</button>
</template>
现在 /client/insertingImages.js
Template.example.events({
'click #loadImage' : function(template,event){
var file = $('#addImage').get(0).files[0],
metadataText = "this is some cool metadata text on the image";
fsFile = new FS.File(file);
fsFile.metadata = {textFile:metadataText}
//Some authentication,(if not file selected cannot upload anything)
if(file === undefined){
alert("SORRY YOU NEED TO UPLOAD AN IMAGE TO CONTINUE");
} else{
Images.insert(fsFile,function(err,succes){
if(err){
console.log(err.reason);
} else{
console.log(succes); //this should return the fsFile, or the Id of fsFile
}
}
}
}
})
告诉我这是否有效
如果你还没有想好怎么操作,那么在你的项目目录下的控制台中执行以下命令:
meteor remove audit-argument-checks
这将修复错误。
我正在尝试使用 FS.Collection2 库在流星中上传工作图像 https://github.com/CollectionFS/Meteor-CollectionFS
我设法上传图片并显示它们,但是在我插入图片后出现以下服务器错误(我只插入,我不更新任何东西)
Exception while invoking method '/cfs.images.filerecord/update' Error: Did not check() all arguments during call to '/cfs.images.filerecord/update'
这是我的代码:
插入:
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function (err, fileObj) {
console.log(err);
});
});
collection:
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images")]
});
if (Meteor.isServer) {
Images.allow({
insert: function (fileID, doc) {
return true;
},
update: function (fileID, doc) {
return true;
},
remove: function(userId, doc) {
return false;
},
download: function (fileID, doc) {
return true;
}
});
}
FS 包版本:
cfs:filesystem 0.1.1
cfs:standard-packages 0.5.3
谢谢希望你能给我指明正确的方向
我添加了错误的屏幕截图。
在你的 meteor 应用程序上试试这个,告诉我是否有效,
首先,为了在 /lib/collections.js folder
上更好地声明 Collections,使用这个。
Images = new FS.Collection("images", {
stores: [new FS.Store.FileSystem("images")]
});
if(Meteor.isClient) {
Meteor.subscribe('Images');
}
同样在 meteor 控制台上,meteor remove autopublish insecure
,有了这个你就拥有了所有 collection 安全,并且第一件事 meteor 加载它 /lib
,文件夹所以 collection 现在可以在 client/server
现在 /server/collections.js
Meteor.publish('Images', function(){
return Images.find();
});
Images.allow({
insert: function(userId, doc) { return true; },
update: function(userId,doc) { return true; },
remove: function(userId,doc) { return false; },
download: function(userId, doc) {return true;},
});
现在/client/insertingImages.html
,使用一些简单的例子
<template name="example">
<input id="addImage" type="file">
<button type="submit" id="loadImage"> Click to add Image</button>
</template>
现在 /client/insertingImages.js
Template.example.events({
'click #loadImage' : function(template,event){
var file = $('#addImage').get(0).files[0],
metadataText = "this is some cool metadata text on the image";
fsFile = new FS.File(file);
fsFile.metadata = {textFile:metadataText}
//Some authentication,(if not file selected cannot upload anything)
if(file === undefined){
alert("SORRY YOU NEED TO UPLOAD AN IMAGE TO CONTINUE");
} else{
Images.insert(fsFile,function(err,succes){
if(err){
console.log(err.reason);
} else{
console.log(succes); //this should return the fsFile, or the Id of fsFile
}
}
}
}
})
告诉我这是否有效
如果你还没有想好怎么操作,那么在你的项目目录下的控制台中执行以下命令:
meteor remove audit-argument-checks
这将修复错误。