javascript - Hacer que UploadFS funcione con angular2-meteor
Resulta que necesito una base de datos de almacenamiento de archivos y UploadFS parece ser la mejor opción. Mi proyecto está en Angular2 TypeScript y Meteor.
meteor add jalik:ufs-gridfsHasta ahora falla cuando intento importar la biblioteca así:
import {UploadFS} from 'meteor/jalik:ufs'El error lanzado dice que no se pudo encontrar la biblioteca (en el lado del cliente).
Pensé que podría ser porque la biblioteca está en javascript mientras que el resto del proyecto está en typescript, así que intenté escribir un stub ufs.d.ts, primero hecho a mano, luego con dstmake, y luego de nuevo a mano cuando descubrí que tenía que exportar el módulo UploadFS para que meteor (barbatus:typescript?) pudiera verlo:
declare module 'meteor/jalik:ufs' {
export module UploadFS{
interface UploadFS {
...
}
}
}
Hasta ahora tenía mi archivo de plantilla ufs.d.ts en la carpeta typings/ y enlazado en el main.d.ts. No hubo errores en tiempo de compilación. Meteor dijo que la base de datos se había creado correctamente... pero luego cuando intenté usarla se rompió.
Descubrí que UploadFS estaba indefinido, así que supuse que no estaba haciendo referencia a la biblioteca, aunque Meteor se compiló sin ningún error.
Así que supongo que lo único que me queda es traducir jalik:ufs y jalik:ufs-gridfs a TypeScript a mano. ¿Es correcto? ¿Hay una manera más fácil de hacer que ufs funcione con angular2-meteor?
¿Usarías alguna otra solución de almacenamiento? ¿Algún consejo para arreglar esta biblioteca o elegir otra?
Respuesta #1
Estoy importando con éxito esa biblioteca y solo suprimiendo las advertencias con esta línea:
import 'meteor/jalik:ufs'; declare let UploadFS:any;
Mantén un ojo en https://github.com/meteor-typings y https://github.com/Urigo/angular2-meteor/issues/102 para definiciones de tipo adecuadas en el futuro.
Nunca deberías tener que reimplementar una biblioteca de JavaScript en TypeScript para poder usarla.
Respuesta #2
import { UploadFS } from 'meteor/jalik:ufs';
console.log('UploadFS', UploadFS);
Esto me da el objeto UploadFS y creo que es totalmente independiente de angular2-meteor, así que supongo que jalik:ufs debería funcionar bien, incluso con esas advertencias generadas por el compilador ts.
Sobre las tipificaciones, esas advertencias son muy molestas, lo sé :) pero por ahora puedes fingir que no las ves.
Aquí hay un ejemplo de implementación de jalik:ufs que hice para Angular1, pero se verá bastante parecido con Angular2.
http://www.angular-meteor.com/tutorials/socially/angular1/handling-files-with-collectionfs
