У меня есть система чата с nodejs и php, когда пользователь нажимает на комнату, чаты извлекаются из nodejs из базы данных sqlite.
const query = db.prepare("SELECT * FROM Chats Where chatRoom = '" + req.body.ll.toString() + "' ORDER BY `timee` DESC limit 10").all()
Здесь req.body.ll.toString() — идентификатор чата с фиксированным лимитом. Поэтому, когда пользователь прокручивает вверху чаты, больше чатов загружается из полного нового запроса в nodejs, лимит сохраняется на стороне клиента в виде числа, последний чат известен из лимита, а временная метка извлекается из последний чат, затем извлекаются все чаты до этого времени.
const more = db.prepare("SELECT * FROM Chats Where chatRoom = '" + req.body.ll.toString() + "' ORDER BY `timee` DESC limit "+ limit +"").all()
var timestamp = more[more.length-1].timee; // last chat's time
var itsid = more[more.length-1].id; // last chat's id
limit = limit + 1; // limit is increased to one for testing
const morechats = db.prepare("SELECT * FROM Chats Where chatRoom = '" + req.body.ll.toString() + "' and timee < '"+ timestamp +"' ORDER BY `timee` DESC limit "+ limit +"").all()
Но если пользователь прокручивает более двух раз, чаты снова загружаются и дублируются, поэтому есть ли способ отслеживать чаты, чтобы проверить, равно ли количество чатов чатам в БД, тогда чаты больше не будут загружаться с помощью слайта? Я использую лучше sqlite в качестве библиотеки для связи с базой данных.
@eol количество загруженных чатов фиксировано, также, если я укажу идентификатор чата, я боюсь, что могу раскрыть уязвимость? Или я должен зашифровать каждый идентификатор? Это будет потреблять ресурсы





Не могли бы вы просто загружать определенное количество записей чата при каждой прокрутке? Это упростило бы пейджинг. Если вы хотите сохранить свою логику, вы можете отфильтровать уже загруженные чаты во внешнем интерфейсе, используя какой-то идентификатор чата?