Collection.update({_ id:id},{$ set:{imgName:name,imgBase64:buffer}});在控制台中以0响应

时间:2015-10-12 15:32:18

标签: javascript mongodb meteor

我正在尝试使用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;
  }
});

我做错了什么?

0 个答案:

没有答案