Я использую LevelGraph (https://github.com/mcollina/levelgraph) для хранения подключенных элементов. Мои элементы связаны следующим образом:
db.put([{
subject: "matteo",
predicate: "friend",
object: "daniele"
}, {
subject: "daniele",
predicate: "friend",
object: "bob"
}, {
subject: "bob",
predicate: "friend",
object: "marco"
}, {
subject: "marco",
predicate: "friend",
object: "fred"
}, {
subject: "fred",
predicate: "friend",
object: "joe"
}, {
subject: "joe",
predicate: "friend",
object: "david"
}], function () {});
Я хотел бы написать функцию для получения n-го друга конкретного человека. Например, здесь шестым другом друга Маттео будет Давид.
Я знаю, что в levelgraph встроена функция поиска:
db.search([{
subject: "matteo",
predicate: "friend",
object: db.v("x")
}, {
subject: db.v("x"),
predicate: "friend",
object: db.v("y")
}, {
subject: db.v("y"),
predicate: "friend",
object: db.v("z")
}], function(err, results) {
console.log(results);
});
Здесь я бы получил 3-го друга друга, но я не уверен, что смогу использовать его, чтобы получить n-го друга друга.
Есть ли способ элегантно усложнить поиск для получения n-го соединения?