2017-12-20 4 views
1

Ich arbeite mit Arangodb und Node.js. Ich versuche die edgecollection in der db zu verwenden. Ich habe arangojs von npm heruntergeladen und die Beispielcodes ausprobiert.Arangodb - mit EDGE arbeiten Assertionsfehler bekommen Edge._key gleich

// ## Assigning the values 
const arangojs = require('arangojs'); 
const aqlQuery = arangojs.aqlQuery; 
const now = Date.now(); 

// ## Const variables for connecting to ArangoDB database 

const host = '192.100.00.000' 
const port = '8529' 
const username = 'xyz' 
const password = 'XYZ' 
const path = '/_db/sgcdm_app/_api/' 
const database = 'sgcdm_app' 

// ## Connection to ArangoDB 

db = new arangojs.Database({ 
url: http://${host}:${port}, 
databaseName: database 
}); 
db.useBasicAuth(username, password); 

// ## Working with EDGES 

const collection = db.edgeCollection('included_in'); 
const edge = collection.edge('included_in/595783'); 
const assert = require('assert'); 

// the edge exists 

assert.equal(edge._key, '595783'); 
assert.equal(edge._id, 'included_in/595783'); 
console.log(db); 

ERROR:

assert.js:42 
throw new errors.AssertionError({ 
AssertionError [ERR_ASSERTION]: undefined == '595783' 
+0

Was macht Ihrer Meinung nach die undefinierten Kante tatsächlich in der 'included_in' Sammlung ist? – peak

Antwort

1

wie dokumentiert, edgeCollection.edge() ist asynchrone: https://github.com/arangodb/arangojs#edgecollectionedge

Es gibt ein Versprechen, keine Kante:

collection.edge('included_in/595783'); 

Promise { 
    <pending>, 
    domain: 
    Domain { 
    domain: null, 
    _events: { error: [Function: debugDomainError] }, 
    _eventsCount: 1, 
    _maxListeners: undefined, 
    members: [] } } 

Sie müssen await das Ergebnis oder verwenden then() etwas mit dem Ergebnis zu tun, sobald es verfügbar ist.

collection.edge('included_in/595783') 
.then(res => { console.log("Key: " + res._key })); 

Key: 595783 

Ihre Behauptung ist assert.equal(edge._key, '595783');, und es schlägt fehl, weil undefined == '595783' falsch ist. edge ist eigentlich ein Promise-Objekt, das keine _key Eigenschaft hat. Daher der Assertionsfehler.

(Cross-post von GitHub issue)