2016-09-01 1 views
-2
UPDATE: this is not a problem of code. Code works as it should. 

I've restarted OrientDB server for few times and then it works as it should. 

So, the problem was in OrientDB server, not the code. 

Seems like there is no timeout for promise result. So, when I was calling `db.class.get` the promise was stuck without invocation of `then` or `catch`. 

My problem arose because of a rare coincidence. Code works properly.Wie kann man in OrientDB einen Verspätungsfehler erkennen?

Zum Beispiel, warum ich nicht einen Rückruf bekommen kann einen Fehler zu fangen, wenn sie versuchen Klasse zu bekommen?

Schauen Sie sich das Beispiel - http://orientdb.com/docs/master/OrientJS-Class-Classes.html#getting-classes

Nun, wenn ich dies tun:

db.class.get('Player') 
.then(
    function(player){ 
     console.log('Retrieved class: ' + player.name); 
    } 
) 
.catch(
    function(err){ 
     console.log('Getting class Player error:',err) 
    } 
); 

nichts wurde tatsächlich angemeldet. Keine Fehler, kein Erfolg.

Dies ist nicht nur "falsche" Versprechen, die ich gefunden habe. Ich denke, OrientDB Tutorial ist so begrenzt.

Also, wie kann ich einen Fehler beim Unterricht bekommen?

+1

Hallo, ich habe versucht Ihren Code und es funktioniert für mich, ich kann die Klasse erhalten, wenn existiert und ich bekomme den Fehler, wenn es nicht existiert. Also, was ist das Problem? Thx im Voraus –

+0

Es ist sehr seltsam. Wenn meine db "ok" ist, funktioniert die "then" -Funktion. Aber wenn db nicht "ok" ist, habe ich nichts in meiner Konsole - "Fang" -Funktion überhaupt nicht aufgerufen. Auch ich habe Fehler, wenn ich auf 'server.use' wie im Tutorial' then' zu verwenden versuchen: Typeerror:. Server.use (...), dann ist keine Funktion Also, I don‘ t verwenden 'dann'. Können wir privat reden? –

+0

Was meinst du mit db nicht ok? –

Antwort

1

Ich habe versucht, Sie Code und in meinem Fall funktioniert es!

Am Anfang habe ich die Klasse „Player“ und mir die folgende Ausgabe in der Tat hat der Code nicht schaffen gegeben:

Getting class Player error: { OrientDB.RequestError: No such class: Player 
    at Db.<anonymous> (C:\Users\Alberto Brunetti\node_modules\orientjs\lib\db\class\index.js:296:64) 
    at Db.tryCatcher (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\util.js:26:23) 
    at Promise._settlePromiseFromHandler (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\promise.js:503:31) 
    at Promise._settlePromiseAt (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\promise.js:577:18) 
    at Async._drainQueue (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\async.js:128:12) 
    at Async._drainQueues (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\async.js:133:10) 
    at Immediate.Async.drainQueues (C:\Users\Alberto Brunetti\node_modules\bluebird\js\main\async.js:15:14) 
    at runCallback (timers.js:574:20) 
    at tryOnImmediate (timers.js:554:5) 
    at processImmediate [as _immediateCallback] (timers.js:533:5) 
    name: 'OrientDB.RequestError', 
    message: 'No such class: Player', 
    data: {} } 

In diesem Code die Fehlermeldung sehen, die Sie erwarten (erste Linie).

Ich hoffe, es hilft.

+0

Ich habe OrientDB Server für einige Male neu gestartet und dann funktioniert es so, wie es sein sollte. Also, das Problem war in OrientDB Server, nicht mein Code. Scheint, als gäbe es kein Zeitlimit für Versprechen Ergebnis. Als ich "db.class.get" anrief, blieb das Versprechen ohne Aufruf von 'then' oder' catch' hängen. –

Verwandte Themen