【问题标题】:Closing out Dropbox Datastore API in NodeJS在 NodeJS 中关闭 Dropbox Datastore API
【发布时间】:2013-08-07 13:21:07
【问题描述】:

我正在尝试将 Dropbox Datastore API 与 NodeJS 一起使用。我可以很好地连接和使用它,但我似乎无法让它停止并让程序优雅地退出。我从https://www.dropbox.com/static/api/1/dropbox-datastores-0.1.0-b3.js 中提取文件并将其放在我的本地目录中。

因此,如果您运行以下命令(使用有效凭据),则它永远不会退出。

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});
});

【问题讨论】:

  • 也许你应该改变你的标题如何优雅地退出 node.js,因为它 - 在我看来 - 与 DropBox 无关。

标签: node.js dropbox dropbox-api


【解决方案1】:

您是否尝试过 process.exit()(参见 http://nodejs.org/api/process.html#process_process_exit_code)?

这应该会优雅地关闭您的程序。

【讨论】:

  • 我有。 Dropbox 数据存储 api 的操作似乎被放入队列并尽可能异步处理。因此,如果您只是执行 process.exit(),则在调用 insert 之后,您的更改很可能不会被持久化。我希望有某种方法可以优雅地关闭 Dropbox api 正在使用的事件队列,以便我可以确定它会保留所有内容。
  • 您是否按照dropbox.com/developers/datastore/docs/… 尝试过syncStatusChanged?并从回调调用 process.exit().
  • 回调提供 'null' 作为参数。如果我从回调中调用 getSyncStatus(),我可以查看它是否仍在上传,但感觉很hacktastic。
【解决方案2】:

未经测试,但打电话给datastore.close()怎么样?

【讨论】:

  • 我试过了。如果我在回调中调用 datastore.close() ,则会收到“数据存储已关闭”的错误消息。与数据存储管理器相同。如果我在回调之外调用它似乎没有影响。
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2011-03-02
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 2015-07-11
  • 2018-07-13
  • 1970-01-01
相关资源
最近更新 更多