이 혼동 될 수 있습니다 여기에 무슨 두 가지가 있습니다 :이 솔루션은 약속이 해결 될 때까지 기다린 후 오류가 발생 여부에 따라 반응하는 것입니다.
우선 Arangojs (ArangoDB의 내부 JS API와 달리)는 실제 ArangoDB 서버와 통신해야하는 모든 것에 대해 비동기입니다. 비동기 함수는 문서에서 "async"로 표시됩니다.
내장 된 node.js 모듈의 비동기 함수 (예 : fs
, http
등)를 node.js 스타일 콜백에 전달할 수 있습니다. 또는 단순히 콜백을 생략 할 수 있으며 메서드는 결과에 대한 약속을 반환합니다. 약속이 작동하는 방법에 대해 자세히 알아볼 수 있습니다 (이 내용은 Mozilla에만 국한된 것은 아니며 그 참조는 매우 훌륭하고 일반적으로 정확합니다). in Mozilla's JavaScript reference documentation
다른 한가지는 arangoj의 컬렉션 객체와 ArangoDB의 실제 컬렉션을 구분하는 것입니다. 드라이버를 사용하면 컬렉션이 존재하는지 여부에 관계없이 컬렉션의 컬렉션 객체를 만들 수 있습니다. 콜렉션이 실제로 존재하지 않는 경우 사용하려고하면 물론 오류가 표시됩니다.
var col = db.collection('whatever');
col.create() // create the collection if it doesn't exist
.catch(function() {}) // ignore any errors
.then(function() {
return col.get(); // make sure the collection exists now
})
.then(function() {
return col.save({some: 'data'});
})
.then(function (result) {
// everything went fine
})
.catch(function (e) {
console.error('Something went wrong', e.stack);
});
(당신이 바벨을 사용하거나 지금부터이 대답을 1 년 읽으면)
또는 비동기를 사용하여/기다리고 :
var col = db.collection('whatever');
try {
await col.create(); // create the collection if it doesn't exist
} catch (e) {} // ignore any errors
try {
await col.get(); // make sure the collection exists now
const result = await col.save({some: 'data'});
// everything went fine
} catch (e) {
console.error('Something went wrong', e.stack);
}
또는 사용 Node.js를 스타일 콜백을 당신이이기 때문에 oldschool 또는 진짜 좋아해 피라미드 :
var col = db.collection('whatever');
col.create(function() { // create the collection if it doesn't exist
// ignore any errors
col.get(function (err) { // make sure the collection exists now
if (err) {
console.error('Something went wrong', err.stack);
return;
}
col.save({some: 'data'}, function (err, result) {
if (err) {
console.error('Something went wrong', err.stack);
return;
}
// everything went fine
});
});
});
arangoDB에 대한 설명서에는 작동하지만 노드 패키지 'arangojs'는 이에 동의하지 않습니다. 존재하지 않는 콜렉션의 경우, if 절에 보관 될 때 내 코드는 'true'를 보여줍니다. 나는 arangojs 솔루션을 원했습니다. 현재 컬렉션의 존재 여부를 확인하기 위해 모든 컬렉션의 목록에서 컬렉션 이름을 확인하고 있습니다. 그러나 내 방법은 매우 조잡하고 나 자신을 좋아하지 않는다. – Prasanna