2016-05-17 4 views
0

Ich bin auf meiner privaten Projekt arbeiten mit Evernote API und node.js (Express.js)Erhalten Sie Inhalte mit Evernote api in node.js Server beachten

Ich habe erfolgreich ein requestToken und accessToken mit jsOAuth Modul und I bekam die Notiz guid von noteMetaData auch.

jedoch, wenn ich

noteStore.getNote

Funktion zu verwenden, es nicht kontinuierlich. mit dieser Fehlernachricht:

Fehler in NodeBinaryHttpTransport.flush: Binary-Protokoll nicht unterstützt synchrone Aufrufe

aber ich meine bereits Callback-Funktion eingefügt.

Ich überprüfte API Docs, aber nicht bestimmte doc für Javascript. Argumente sind anders. Ich überprüft, welche Art von Argumenten noteStore.getNote durch Protokollieren Function.length will, aber es war 0.

hier ist mein Code.

Ich benutze Express und Router ist erfordern ('Express'). Router();

GB ist ein globales Objekt, das mein Entwickler-Token und mein Geheimnis enthält.

router.get('/users',function (request,response){ 
var parsedUrl = url.parse(request.url); 
console.log('search is:'+parsedUrl.search) 
client.getAccessToken(
    gb.oauthToken, 
    gb.oauthSecret, 
    getOauthVerifier(parsedUrl.search), 
    function(error, oauthAccessToken, oauthAccessTokenSecret, results) { 
    if(error) { 
     console.log("error\n\n\n"); 
     console.log(error); 
    } 
    else { 
     console.log('successfully get an access token.'); 
     var accessedClient = new Evernote.Client({ 
     token: oauthAccessToken, 
     sandbox:true 
     }) 

     var noteStore = accessedClient.getNoteStore("https://sandbox.evernote.com/edam/note/"); 
     noteStore.listNotebooks(function(err, notebook){ 

       var filter = new Evernote.NoteFilter(); 

       filter.notebookGuid = notebook[0].guid; 

       console.log('filter is..',filter); 
       var resultSpec = new Evernote.NotesMetadataResultSpec(); 
       resultSpec.includeTitle = true; 
       resultSpec.includeContentLength = true; 
       resultSpec.includeCreated = true; 
       resultSpec.includeAttributes = true; 

       noteStore.findNotesMetadata(filter, 0, 100, resultSpec, function(err, notesMeta) { 
        if (err) { 
        console.error('err',err); 
        } 
        else { 

        console.log("Found "+notesMeta.notes.length+" notes in your default notebook . . .") 
        for (var i in notesMeta.notes) { 

        var noteGuid = notesMeta.notes[i]['guid']; 

        var note = noteStore.getNote(
         noteGuid,{ 
         withContent: true 
         }, 

         function(err, results){ 

          if(err) return console.error("Error") 
          console.log(results); 
          response.end(); 
         })      
        } 
        } 
       }); 
     })   
    } 
); 
}) 

Antwort

0

Es war eine dumme Frage. Ich habe eine Lösung gefunden. Alles, was ich tun musste, war, sich an den Parameter zu halten, der in den API-Dokumenten geführt wurde.

noteGuid,{ 
    var note = noteStore.getNote(true, true, true,true 
}, 

function(err, results){ 
    if(err) 
     return console.error("Error") 
    console.log(results); 
    response.end(); 
}) 
Verwandte Themen