Node.js 关闭NodeJS中的Dropbox数据存储API

Node.js 关闭NodeJS中的Dropbox数据存储API,node.js,dropbox,dropbox-api,Node.js,Dropbox,Dropbox Api,我正在尝试将Dropbox数据存储API与NodeJS一起使用。我可以很好地连接和使用它,但我似乎无法让它停止并让程序优雅地退出。我从中提取文件并将其放入本地目录 因此,如果您运行以下操作(使用有效的凭据),那么它将永远不会退出 var dropbox = new require('./dropbox.js') var client = new dropbox.Client ({ key:'apikey', secret:'apisecret', token:'usero

我正在尝试将Dropbox数据存储API与NodeJS一起使用。我可以很好地连接和使用它,但我似乎无法让它停止并让程序优雅地退出。我从中提取文件并将其放入本地目录

因此,如果您运行以下操作(使用有效的凭据),那么它将永远不会退出

var dropbox = new require('./dropbox.js')
var client = new dropbox.Client
({
    key:'apikey',
    secret:'apisecret',
    token:'useroauthtoken',
    uid:'useruid'
});

var datastoreManager = client.getDatastoreManager();
datastoreManager.openDefaultDatastore(function(error,datastore){
    if(error) console.log(error);

    var table = datastore.getTable('exampletable');
    table.insert({hello:'newman',inthepool:true});
});

未测试,但是调用
数据存储.close()

是否尝试过process.exit()(请参阅)


这会让你的程序正常关机。

我试过了。如果我在回调中调用datastore.close(),我会得到一个错误“datastore已经关闭”。与datastoreManager相同。如果我在回调之外调用它,它似乎没有任何影响。也许你应该在如何优雅地退出node.js中更改你的标题,因为在我看来,这与DropBox无关。我有。dropbox数据存储api的操作似乎放在队列上,并尽可能异步处理。因此,在调用insert之后,如果您只执行process.exit(),您的更改很可能不会持久化。我希望有某种方法可以优雅地关闭dropbox api正在使用的事件队列,这样我就可以确定它是否保存了所有内容。您是否尝试过按照更改SyncStatus?并从回调调用进程.exit()。回调提供“null”作为参数。如果我在回拨中调用getSyncStatus(),我可以看到它当前是否仍在上传,但感觉很有黑客味。