在数据插入数据库后发出套接字事件

5anewei6  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(230)

所以我正在开发一个聊天应用程序。当一个新用户注册时,应在不刷新的情况下通知上的其他用户。
所以我制作了一个表单,每当用户注册时,我都使用套接字发送用户名。我检查用户是否在数据库中,然后将用户信息发送到另一个页面。

$("#submit").click(function(){    
    socket.emit("register",$(".username").val())
})

问题是数据插入数据库需要时间,直到执行emit事件,并且我的检查新用户是否在数据库中总是返回none。

@socketio.on('register')
def test_connect(data):
    user = Detail.query.filter_by(username=data).first()
    print(user) # this always return none and emit event doesn't take place
    if user:
        emit("regis",user.username,broadcast=True ,include_self=False)

这里是register函数的相关部分,我在这里验证表单并插入数据。

form = RegistrationForm()
if request.method=="POST" and form.validate_on_submit():
    user = Detail(username=form.username.data,email=form.email.data,password=form.password.data)
    db.session.add(user)
    db.session.commit()
    return redirect("/signin")

是否有一种方法可以确保仅当 if request.method=="POST" and form.validate_on_submit(): 返回true,以便将数据插入到数据库中,并在该发出事件发生之后插入。
我试着用这个问题在路由中发射,但它似乎不起作用,函数socket.io不执行。
如有任何建议,我们将不胜感激。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题