我正在尝试使用FileReader
将图像上传到MongoDB,
帮助程序中的代码如下:
Template.Producto.events({
'change #file-upload': function (event, template) {
var file = event.target.files[0];
var name = event.target.files[0].name;
var id = this._id._str;
if (!file) return;
// Only process image files.
if (!file.type.match('image.*')) {
alert('Only image files are allowed');
return;
}
var reader = new FileReader();
reader.onload = function (file) {
var result = reader.result;
Meteor.call('saveFile', name, result, id);
}
Session.set('file', name);
reader.readAsDataURL(file); //read the file as base64
console.log(id);
console.log(name);
console.log(file);
}
});
和我的方法:
Meteor.methods({
'saveFile': function (name, buffer, id, data) {
console.log(id);
console.log(name);
console.log(buffer);
Productos.update({_id: id}, {
$set: {
imgName: name, imgBase64: buffer
}
})
}
});
问题是,我也无法从前端控制台更新我的文档。
如果我从控制台更新,控制台将返回0号码 我的文档在id上有一个多维数组(产品对象来自json文档的mongoimport,因此id可以通过这种方式访问)。
如果我尝试使用id
访问_str
,则控制台会返回错误:
errorClass
{
error: 403,
reason: "Not permitted. Untrusted code may only update documents by ID.",
details: undefined,
message: "Not permitted. Untrusted code may only update documents by ID. [403]",
errorType: "Meteor.Error"
}
我的Products.allow
如下
Productos = new Mongo.Collection('productos');
Productos.allow({
insert: function(userId, doc) {
return true;
},
update: function(userId, doc) {
return true;
},
remove: function(userId, doc) {
return true;
}
});
我做错了什么?