使UploadFS与angular2-meteor一起使用

时间:2016-05-20 06:37:57

标签: javascript database meteor typescript angular2-meteor

我碰巧需要一个文件存储数据库,UploadFS似乎是最好的选择。我的项目是Angular2打字稿和Meteor。

meteor add jalik:ufs-gridfs

到目前为止,当我尝试导入这样的库时,它失败了:

import {UploadFS} from 'meteor/jalik:ufs'

抛出的错误导致无法找到库(在客户端)。

我认为这可能是因为库位于javascript,而typescript项目的其余部分位于ufs.d.ts,所以我尝试编写存根UploadFS,首先手工制作,然后使用{{ 3}},然后当我发现我必须导出模块declare module 'meteor/jalik:ufs' { export module UploadFS{ interface UploadFS { ... } } } 以便流星(barbatus:typescript?)可以看到它时再手工操作:

ufs.d.ts

到目前为止,我在typings/文件夹中找到了main.d.ts存根文件,并在jalik:ufs中进行了关联。编译时没有错误。流星伤心的数据库是正确创建的......但是当我试图使用它时,它就破了。

我发现UploadFS未定义,所以我认为即使Meteor编译没有任何错误,它也没有引用该库。

所以我想我唯一留下的就是手工将jalik:ufs-gridfs$http.get翻译成打字稿。那是对的吗?是否有一种更简单的方法让ufs与angular2-meteor合作?

您会使用其他存储解决方案吗?修理这个库或选择另一个库的任何建议吗?

2 个答案:

答案 0 :(得分:3)

我已成功导入该库,并使用此行禁止警告:

import 'meteor/jalik:ufs'; declare let UploadFS:any;

将来关注https://github.com/meteor-typingshttps://github.com/Urigo/angular2-meteor/issues/102正确的类型定义。

您永远不必在TypeScript中重新实现JavaScript库以便使用它。

答案 1 :(得分:2)

import { UploadFS } from 'meteor/jalik:ufs';
console.log('UploadFS', UploadFS);

这为我提供了UploadFS对象,我认为它完全独立于angular2-meteor所以我认为jalik:ufs应该正常工作,即使这些警告由ts生成编译器。

关于打字,这些警告非常烦人,我知道:)但你可以假装现在你不会看到它们。

这是我为Angular1制作的jalik:ufs的示例实现,但它与Angular2看起来几乎相同。

http://www.angular-meteor.com/tutorials/socially/angular1/handling-files-with-collectionfs