Tworzę prostą małą sieć społecznościową. Mam zrobione wszystkie wpisy, użytkownicy itd. Jedyną wadą jest to, że jest to tylko czat. Gdy publikujesz coś na czyjejś stronie, jedynymi osobami, które mogą go wyświetlać, są osoby na stronie w danym momencie. Po odświeżeniu wszystkie posty zniknęły. Oto techniczna część tego, co robię, gdy wysyłane są posty i co chcę zrobić.Mangusta znaleźć ostatnie dziesięć wpisów w bazie danych
Ilekroć publikujesz post, robi coś, co nie jest ważne, nie będę ich wymieniał. Ale jest jedna część, która jest ważna, wysyłając ją na serwer NodeJS. Oto kod wykorzystuje:
function sendPost(cont) {
socket.emit("newPost", username, uid, cont, page);
model.posts.unshift(new Post(username, uid, cont, page)); // You don't need to worry about this
}
Jak widać, to emituje „newPost” z nazwą użytkownika, identyfikatorze treści i strony. Na serwerze otrzymuje posty z tym, a następnie wstawia do bazy danych.
socket.on("newPost", function (name, id, cont, page) {
var thePost = new Post({name: name, cont: cont, id: id, page: page});
console.log("Received a new post by "+thePost.name+"(ID of "+thePost.id+"), with the content of \""+thePost.cont+"\", on the page "+thePost.page);
socket.broadcast.emit("Post", name, id, cont, page);
console.log("Post sent!");
console.log("Putting post in database...");
thePost.save(function (err, thePost) {
if (err) {
console.log("Error inserting into database: "+err);
} else {
console.log("Put into database finished!");
}
});
});
Teraz za mój rzeczywisty problem/pytanie. Za każdym razem, gdy strona ładuje się, wysyła żądanie do serwera w ten sposób:
socket.emit("getPrevious", curPage, amount);
To działa dobrze. Na serwerze otrzymuje to i wykonuje następujące czynności:
socket.on("getPrevious", function(curPage, amount) {
console.log("Someone requested a page update, sending it to them...");
Post.find({'page': curPage}).sort('-date').execFind(function(err, post){
console.log("Emitting Update...");
socket.emit("Update", post.name, post.id, post.cont);
console.log("Update Emmited");
});
});
Ten kod znajdzie tylko jeden z najnowszych postów na tej stronie. Chcę, aby znalazł ostatnie posty, a potem je odesłał. Nawet to dzieje się tylko raz, kiedy przejść do strony, wyświetli to:
null says
moje dwa pytania są to: Jak chciałbym zrobić to znaleźć najnowsze stanowisk, a dlaczego, tylko ten jeden , czy zwraca "null"?
Dzięki temu zaliczki. Jeśli potrzebujesz jakiegoś kodu, powiedz mi. Jeśli coś jest niejasne, powiedz mi.
dzięki, dodam, że teraz! – Beaurocks16
OK, jeszcze jeden problem. Robię to, wszystkie aktualizacje są wysyłane, wszystko jest w porządku, z tym wyjątkiem, że nie wydaje się sortowaniem. .sort ("- date") i .sort ("date") lub no .sort w ogóle daje takie same wyniki. Czy możesz rzucić trochę światła na to? – Beaurocks16
Czy masz pojęcie, dlaczego ten rodzaj nie zadziała? – Beaurocks16