Meteor Project - проблема при загрузке изображения - PullRequest
0 голосов
/ 23 января 2020

При загрузке изображения я получаю сообщение об ошибке ниже на консоли сервера.

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

Здесь я предоставляю свои фрагменты кода для вашей ссылки.

Код сервера конструктора коллекции:

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;
            }
        });
    }

Заранее спасибо.

1 Ответ

0 голосов
/ 24 января 2020

Вы экспортируете по умолчанию из './collections_img.js'

Но вы импортируете это так:

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

Вам нужно импортировать это так

import  Collections_Images  from './collections_img.js';

И .insert() метод на стороне клиента, нет необходимости отправлять файл через Meteor.method

...