0

我有一个带有nodejs和php的聊天系统,当用户点击一个房间时,聊天是从sqlite数据库中的nodejs获取的

const query = db.prepare("SELECT * FROM Chats Where chatRoom = '" + req.body.ll.toString() + "' ORDER BY `timee` DESC limit 10").all()

req.body.ll.toString()是有固定限制的聊天室的id。因此,当用户在聊天顶部滚动时,会从 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?我正在使用better-sqlite作为与数据库通信的库

4

0 回答 0