Próbuję iterować po różnych identyfikatorach nad kolekcją w nodejs. Coś, co będzie działać jak w poniższym kodzie:Mongoose - Przejdź do następnego elementu
//Callbacks removed for readability
var thisPost = mongoose.model('Post').findOne({tags: 'Adventure'});
console.log(thisPost.title); // 'Post #1 - Adventure Part 1'
var nextPost = thisPost.next({tags: 'Adventure');
console.log(nextPost.title); // 'Post 354 - Adventure Part 2'
Najlepszy pomysł tak daleko byłoby dodać LinkedList do mojego schematu, więc mogłem zadzwonić find() nad moim kolejnym odniesieniem do konkretnego ID ale miałem nadzieję na coś mniej "trudny", który pozwoliłby mi użyć tego odnośnika Mongoose (thisPost) jako kursora, od którego można rozpocząć moje find().
Dzięki
EDIT: iteracja jest przeznaczona do pracy na wielu zapytań stron. Lepszy przykład:
//Callbacks removed for readability
//User 'JohnDoe' visits the website for the first time
var thisQuote = mongoose.model('Quote').findOne().skip(Math.rand());
res.send(thisQuote); // On page output, JohnDoe will see the quote 42
//Saving the current quote cursor to user's metadatas
mongoose.model('User').update({user: 'JohnDoe'}, {$set: {lastQuote: thisQuote }});
//User 'JohnDoe' comes back to the website
var user = mongoose.model('User').findOne({user: 'JohnDoe});
var thisQuote = user.lastQuote.next();
res.send(thisQuote); // On page output, JohnDoe will see the quote 43
//Saving the current quote cursor to user's metadatas
mongoose.model('User').update({user: 'JohnDoe'}, {$set: {lastQuote: thisQuote }});
//And so on...
Nie użyłem tej wersji na końcu, ale tak, sądząc z dokumentacji, strumienie są najlepszym sposobem na zrobienie tego, co chcę. Chociaż nie będę go używać z wielu powodów zależnych od aktualnej architektury kodu mojej aplikacji :) – red
Zmodyfikowałem swoją odpowiedź na podstawie Twojej aktualizacji. –
Wow. Zaimplementowałam to wczoraj, korzystając z połączonej listy w mojej bazie danych, ale twoja odpowiedź jest tak prosta, że bardzo się wstydzę, że sama o tym nie pomyślałam. Kudos za swoje myślenie i milion dziękuję za odpowiedź :) – red