【问题标题】:Meteor Project - Issue while uploading imageMeteor Project - 上传图片时出现问题
【发布时间】:2020-01-24 21:37:38
【问题描述】:

上传图片时,我在服务器控制台出现以下错误。

I20200123-18:57:34.751(5.5)? Exception while invoking method 'collections.images.insert' TypeError: Cannot read property 'insert' of undefined
I20200123-18:57:34.753(5.5)?     at MethodInvocation.collections.images.insert (imports/api/collections/methods.js:20:31)
I20200123-18:57:34.753(5.5)?     at maybeAuditArgumentChecks (packages/ddp-server/livedata_server.js:1771:12)
I20200123-18:57:34.753(5.5)?     at DDP._CurrentMethodInvocation.withValue (packages/ddp-server/livedata_server.js:719:19)
I20200123-18:57:34.754(5.5)?     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
I20200123-18:57:34.754(5.5)?     at DDPServer._CurrentWriteFence.withValue (packages/ddp-server/livedata_server.js:717:46)
I20200123-18:57:34.754(5.5)?     at Meteor.EnvironmentVariable.EVp.withValue (packages/meteor.js:1234:12)
I20200123-18:57:34.754(5.5)?     at Promise (packages/ddp-server/livedata_server.js:715:46)
I20200123-18:57:34.755(5.5)?     at new Promise (<anonymous>)
I20200123-18:57:34.755(5.5)?     at Session.method (packages/ddp-server/livedata_server.js:689:23)
I20200123-18:57:34.755(5.5)?     at packages/ddp-server/livedata_server.js:559:43

在这里,我提供我的代码 sn-ps 供您参考。

集合构造器服务器代码:

import { FilesCollection } from 'meteor/ostrio:files';

const Collections_Images = new FilesCollection({
    collectionName: 'collections_images',
    storagePath: 'uploads/Collections-Images',
    allowClientCode: false,
    onBeforeUpload(file) {
        // Allow upload files under 10MB, and only in png/jpg/jpeg formats
        if (file.size <= 10485760 && /png|jpg|jpeg/i.test(file.extension)) {
            return true;
        }
        return 'Please upload image, with size equal or less than 10MB';
    }
});

export default Collections_Images;

创建方法代码:

import { Meteor } from 'meteor/meteor';
import { Collections_Images } from './collections_img.js';

Meteor.methods({
  'collections.images.insert'(images) {
    return Collections_Images.insert({
          file : images,
          streams: 'dynamic',
          chunkSize: 'dynamic',
        })
  },
});

客户端js代码:

"change #myFileInput" : function(event){
        const images = event.currentTarget.files[0];
        Meteor.call('collections.images.insert',images, (error) => {
            if(error){
                alert("collection image insert : "+error.message);
            }
            else{
                images=null;
            }
        });
    }

提前致谢。

【问题讨论】:

标签: meteor


【解决方案1】:

您从 './collections_img.js' 导出默认值

但是你像这样导入它:

import { Collections_Images } from './collections_img.js';

你需要这样导入

import  Collections_Images  from './collections_img.js';

并且.insert()方法在客户端代码上,不需要通过Meteor.method发送文件

【讨论】:

  • 感谢 Mikkel 的回答。
猜你喜欢
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多