2

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

meteor add jalik:ufs-gridfs

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

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

抛出的错误是找不到库(在客户端)。

我认为这可能是因为库在javascript项目的其余部分在,typescript所以我尝试编写一个 stub ufs.d.ts,首先手工制作,然后使用dstmake,然后当我发现我必须导出模块UploadFS以便流星( barbatus:typescript?) 可以看到它:

declare module 'meteor/jalik:ufs' {
    export module UploadFS{
        interface UploadFS {
            ...
        }
    }
}

到目前为止,我在文件夹中有我的ufs.d.ts存根文件并在. 编译时没有错误。流星伤心数据库被正确创建......但是当我尝试使用它时它坏了。typings/main.d.ts

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

所以我想我唯一剩下的就是翻译jalik:ufsjalik:ufs-gridfs手工打字了。那是对的吗?有没有更简单的方法让 ufs 与 angular2-meteor 一起工作?

您会使用其他存储解决方案吗?修复这个库或选择另一个库有什么建议吗?

4

2 回答 2

3

我成功地导入了该库,并用这一行抑制了警告:

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

请密切关注https://github.com/meteor-typingshttps://github.com/Urigo/angular2-meteor/issues/102以了解未来的正确类型定义。

您永远不必为了使用它而在 TypeScript 中重新实现 JavaScript 库。

于 2016-06-08T20:41:35.300 回答
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

于 2016-06-02T13:02:11.297 回答