2013-08-07 26 views
2

我正在嘗試在NodeJS上使用Dropbox Datastore API。我可以連接並使用它,但我似乎無法停止並讓程序正常退出。我從https://www.dropbox.com/static/api/1/dropbox-datastores-0.1.0-b3.js中提取文件並將其放入我的本地目錄中。在NodeJS中關閉Dropbox Datastore API

所以,如果你運行以下(有效的信譽),那麼它永遠不會退出。

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

也許你應該改變你的標題,如何優雅地退出node.js,因爲它在我看來與DropBox無關。 –

回答

0

未經測試,但如何致電datastore.close()

+0

我試過了。如果我在回調中調用datastore.close(),則會出現「數據存儲區已關閉」的錯誤。與datastoreManager相同。如果我在回調之外調用它,它似乎沒有任何影響。 – Grummle

1

您是否嘗試過process.exit()(請參閱http://nodejs.org/api/process.html#process_process_exit_code)?

這應該會優雅地關閉您的程序。

+0

我有。看起來dropbox數據存儲區api的操作放在隊列中,並按照它們的處理方式進行異步處理。所以在調用插入後,如果你只是做一個process.exit(),你的改變很可能不會被持久化。我希望有一些方法可以正常關閉dropbox api正在使用的事件隊列,以便我可以確定它保留了所有內容。 – Grummle

+0

您是否按照https://www.dropbox.com/developers/datastore/docs/js#Dropbox.Datastore.DatastoreManager嘗試了syncStatusChanged?並從回調函數process.exit()中獲取。 –

+0

回調函數提供'null'作爲參數。如果我從回調中調用getSyncStatus(),我可以看到它目前是否仍在上傳,但它感覺非常糟糕。 – Grummle