2016-03-18 28 views
3

Bir FOXX uygulaması otomatik olarak bir dizin oluşturabilir mi? Performans için benzersiz bir dizin olarak kullanılacak bir alana ihtiyacım olan bir koleksiyonum (model) var. Gerçekten sonra karma yaratabilirdim, ama model tanımını kullanarak mevcut olmadığından emin olmak istedim. Eğer öyleyse, belgeleri nerede bulabilirim?ArangoDB FOXX içinde bir dizin nasıl tanımlanır?

İkincil bir soru FOXX'te bir dizin nasıl oluşturulur? Arangojilerde nasıl yapılacağını biliyorum ama bunu FOXX belgelerinde bulamıyorum. Bu soruyu kazıyın. Bunu çözdüm: db.collection.createIndex(). Ama çocuk, belgelerin "misc" bölümünde derin bir şekilde gizlenmişti. https://docs.arangodb.com/IndexHandling/WorkingWithIndexes.html

'use strict'; 
var myCollection = applicationContext.collection('my-data'); 
myCollection.ensureIndex({type: 'hash', fields: ['a', 'b'], unique: true}); 

:

cevap

4

endeks API ve ArangoDB belgelerinde bulunabilir (Foxx sadece çerçeve ArangoDB bina ve yönetme microservices sağlamaktadır olan) Foxx API parçası ama genel ArangoDB API olmadığını ArangoDB'de 2.x Foxx, koleksiyonları ve belgeleri (örneğin, koleksiyonlarda saklanan veri kümeleri) etrafındaki paketleyicilere sırasıyla depolar ve modeller adı verilir. Her bir depo bir koleksiyonu temsil eder ve her model bir belgeyi temsil eder. ArangoDB 3.0, bu ek karmaşıklığı ortadan kaldıran yeni, basitleştirilmiş bir API sağlayacaktır.

'use strict'; 
var Foxx = require('org/arangodb/foxx').Repository; 
var MyModel = Foxx.Model.extend({/* ... */}); 
var MyRepo = Foxx.Repository.extend({ 
    indexes: [ 
    // same syntax as collection.ensureIndex: 
    {type: 'hash', fields: ['a', 'b'], unique: true} 
    ] 
}); 
var repo = new MyRepo(applicationContext.collection('my-data'), { 
    model: MyModel 
}); 

: Bunu gibi ek indexes özelliğiyle depo tanımlamanız gerekir (jeo endekslerine koleksiyonları için jeo sorguları gibi) Foxx depoları üzerinde indeks özgü yöntemleri kullanmak için

depo başlatılır (yani new MyRepo(/* ... */) çağrılır), Foxx, dizinlerin gerektiği şekilde oluşturulduğundan emin olur.

https://docs.arangodb.com/Foxx/Develop/Repository.html#defining-indexes de belgelere bakın.

Alternatif olarak, Foxx depolarını kullanmak istemiyorsanız, yukarıdaki normal dizin API'sini kullanarak, koleksiyon oluşturulduktan sonra kurulum betiğinizdeki dizinleri tanımlayabilirsiniz. Her iki durumda da, kodu birkaç kez çalıştırmak konusunda endişelenmenize gerek yoktur: ensureIndex, dizin zaten mevcutsa hiçbir şey yapmaz.