Я делаю простую маленькую социальную сеть. У меня есть все вводные сообщения, пользователи и т.д. Единственное, что сейчас не так, это то, что это просто чат. Всякий раз, когда вы публикуете что-либо на чьей-либо странице, единственные люди, которые могут просматривать это, — это люди, находящиеся на странице в данный момент. При обновлении все сообщения исчезают. Вот техническая часть того, что я делаю, когда отправляются сообщения, и что я хочу сделать.
Всякий раз, когда вы публикуете пост, он делает что-то неважное, я не буду их перечислять. Но есть одна важная часть — отправка на сервер NodeJS. Вот код, который он использует:
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
}
Как видите, он создает «newPost» с именем пользователя, uid, содержимым и страницей. На сервере он получает сообщения с этим, а затем вставляет в базу данных.
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!");
}
});
});
Теперь о моей актуальной проблеме/вопросе. Всякий раз, когда страница загружается, она отправляет запрос на сервер следующим образом:
socket.emit("getPrevious", curPage, amount);
Это работает все отлично. На сервере он получает это и делает следующее:
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");
});
});
Этот код найдет только одно из последних сообщений на этой странице. Я хочу, чтобы он нашел последние сообщения, а затем отправил их обратно. Даже если это происходит только один раз, когда я захожу на страницу, она отображает это:
null says
У меня два вопроса: как мне заставить его находить последние сообщения и почему, только с этим, он возвращает «ноль»?
Спасибо заранее. Если вам нужен какой-либо код, скажите мне. Если что-то непонятно, скажите.
date
, определенное в вашей схеме и в документахPost
, которое содержит дату каждого документа, по которому вы хотите отсортировать? 28.05.2013_id
, если его приближенное время создания соответствует вашим целям. 28.05.2013