转换autodesk view和data api后Meteor方法未保存到数据库

转换autodesk view和data api后Meteor方法未保存到数据库,meteor,autodesk-forge,autodesk-viewer,Meteor,Autodesk Forge,Autodesk Viewer,我一直在为一个项目创建autodesk 3D viewer系统 我正在尝试将三维模型文件(*.rvt扩展名)上载到meteor服务器,然后使用Autodesk View和Data API对其进行转换 我正在使用将文件上载到系统。完成此上载后,回调函数将触发Meteor方法调用,以将此文件上载到Autodesk API并对其进行跟踪 meteor上载的客户端代码: Template.uploader.helpers({ afterUpload: function(){ re

我一直在为一个项目创建autodesk 3D viewer系统

我正在尝试将三维模型文件(*.rvt扩展名)上载到meteor服务器,然后使用Autodesk View和Data API对其进行转换

我正在使用将文件上载到系统。完成此上载后,回调函数将触发Meteor方法调用,以将此文件上载到Autodesk API并对其进行跟踪

meteor上载的客户端代码:

Template.uploader.helpers({
    afterUpload: function(){
        return {
            finished:function(index,fileinfo,content){
                console.log(fileinfo);
                Meteor.call('translateFile', fileinfo.name, function(err,result){
                    console.log(result);
                });
            }
        }
    }
});
即使在开始上载之前,控制台日志也会打印未定义的内容。 以下是服务器代码

translateFile:function(name){
    var filename =process.env.PWD + '/.data/' + name ;
    var bucket =
        'model'
        + new Date ().toISOString ().replace (/T/, '-').replace (/:+/g, '-').replace (/\..+/, '')
        + '-' + lmv.Lmv.getToken ().toLowerCase ().replace (/\W+/g, '') ;
    var policy ='persistent' ;
    console.log(bucket);

    async.waterfall ([
        function (callbacks1) {
            console.log ('createBucketIfNotExist') ;
            new lmv.Lmv(bucket).createBucketIfNotExist (policy)
                .on ('success', function (data) {
                    console.log ('Bucket already or now exist!') ;
                    callbacks1 (null, data) ;
                })
                .on ('fail', function (err) {
                    console.log ('Failed to create bucket!') ;
                    callbacks1 (err) ;
                })
            ;
        },

        function (arg1, callbacks2) {
            console.log ('async upload') ;
            new lmv.Lmv(bucket).uploadFile (filename)
                .on ('success', function (data) {
                    console.log (filename + ' uploaded.') ;
                    callbacks2 (null, data) ;
                })
                .on ('fail', function (err) {
                    console.log ('Failed to upload ' + filename + '!') ;
                    callbacks2 (err) ;
                })
            ;
        },

        function (arg1, callbacks3) {
            console.log ('Launching translation') ;
            var urn =JSON.parse (arg1).objects [0].id ;
            new lmv.Lmv (bucket).register (urn)
                .on ('success', function (data) {
                    console.log ('Translation requested.') ;
                    callbacks3 (null, data) ;
                })
                .on ('fail', function (err) {
                    console.log ('Failed to request translation!') ;
                    callbacks3 (err) ;
                })
            ;
        }

    ], function (err, results) {
        console.log(results.urn);
        console.log(results);
        console.log(err);
        if (err){
            console.log(err);
            return err;
        }
        if(results){
            Document.insert({urn:results.urn,name:name});
            console.log('inserting');
        }
    }) ;

    console.log('---------------------HERE AT THE END---------------------')

},
客户端代码为:

Meteor.call('translateFile', name, function(err,result){
    console.log(result);
})
问题是,该方法立即返回一个未定义的值,并且async.瀑布中的所有控制台日志都以正确的顺序打印,上一次回调“插入”中的日志除外。这是因为Document.insert函数没有被调用/激发,我甚至没有收到错误

我试过期货图书馆,但没用。我甚至尝试将insert函数放在另一个方法中,但仍然没有用


任何想法都会非常有用。如果有必要,我很乐意提供更多的信息。

很难猜出哪里出了问题,而且我对Meteor并不熟悉,我想在这种情况下,这并不重要。您是否尝试过npm软件包

安装版本1.0.7,因为最新版本与最近修改的当前API不是最新版本


上传和翻译文件非常简单,自述文件和测试中提供了一个示例,请参阅本文档。我用它作为基础,在meteor系统中创建这个上传。它更多地与meteor方法的工作方式有关,而不是与autodesk进行上载的方式有关。