Я пишу приложение для редактирования текста с Node.js & express и хочу добиться автоматического сохранения Google Docs-esque всякий раз, когда пользователь редактирует свой текст.
В настоящее время я делаю это, сохраняя в базу данных с AJAX всякий раз, когда пользователь нажимает клавишу в текстовой области. Как только я начинаю печатать с любой приличной скоростью, процесс сохранения останавливается и не сохраняет большую часть содержимого.
Это, однако, прекрасно работает при медленном наборе.
В настоящее время я использую mLab, хостинг MongoDB, может ли это быть проблемой?
На самом деле, как лучше всего справиться с этой задачей?
edit.ejs (интерфейс js):
$(document).ready(function() {
$('#board-lyrics').keyup(updateLyrics);
$('#board-title').keyup(updateLyrics);
function updateLyrics() {
let boardData = {
title: $('#board-title').val(),
content: $('#board-lyrics').val()
}
$.ajax({
type: "POST",
url: `./<%= id %>`,
data: boardData,
success: function(data) {
},
error: function() {
console.log('error');
}
});
}
});
app.js
app.post('/edit/:id', urlencodedParser, (req, res) => {
let user = req.user;
let boardId = req.params.id;
let query = {"_id": req.user.id};
let update = {"$set": {}};
let index;
for (let i = 0; i < user.boards.length; i++) {
if (user.boards[i]._id == boardId) {
index = i;
}
}
update.$set[`boards.${index}.title`] = req.body.title;
update.$set[`boards.${index}.content`] = req.body.content;
let options = { new: true };
User.findOneAndUpdate(query, update, options, function(err, doc){
console.log(query);
console.log(update);
console.log(doc);
});
});