【问题标题】:Is there anyway to query SQLAlchemy using JavaScript [closed]无论如何使用JavaScript查询SQLAlchemy [关闭]
【发布时间】:2020-10-16 11:16:04
【问题描述】:

我正在创建一个以 Flask 作为后端的网站,我希望我的 JavaScript 在其中查询我的 SQLAlchemy 数据库以检查是否有任何同名的用户,如果是,则显示一条消息,如果没有,然后继续路径, 任何帮助将不胜感激,谢谢

我也不想泄露我所有的用户名

我的 Flask Code 来注册用户名

@app.route("/reg/", methods=["POST", "GET"]);
def reg():
    if request.method == "POST":
        username = request.form["username"]
        
        check = db.query.filter_by(username=username).first()
        
        if check is None:
            add = db(username=username)
            udb.session.add(add)
            udb.session.commit()
            
            return render_template("login.html")

        else:
            return ('' ,304) # instead of this I want JavaScript to check and send a message that user already exists   
    else:
        return render_template("login.html")

我的表单 HTML

<form action="#" method="POST">
<input type="text" placeholder="Enter Username" name="username">
<input type="submit" name="submit">
</form>

再次感谢

【问题讨论】:

  • 你是什么意思“我的JavaScript”?如果您的意思是在 client 中,即在您的用户浏览器中运行的代码,那么它不能。拥有 Flask 后端的目的是与数据库对话并通过 API 公开数据(通常遵循 REST 原则)。

标签: javascript python flask


【解决方案1】:

Javascript 做不到!但如果我以另一种方式理解您,您可以启动一个 SQLAlchemy 对象并将其传递给模板上下文,如下所示:

query = Users.query
return render_template('folder/mytemplate.html', user=query)

在您的模板中,您还可以在 HTML &lt;script&gt; 标记中根据需要过滤查询。

<script>
    var x = '{{ user.first().name }}' // here you can play with query
<script>

【讨论】:

  • 你能告诉我如何查询我的表名是sup,列名是uname
  • 在您的情况下,用户表是 sup.name 列是 .uname
【解决方案2】:
async store(req, res){
    
    const { username } = req.body;

    const userExists = await Dev.findOne({ user: username });

    if(userExists){
        return res.json(userExists);
    }

    const response = await axios.get(`https://api.github.com/users/${username}`);

    const { name, bio, avatar_url: avatar } = response.data;

    const dev = await Dev.create({
        name,
        user: username,
        bio,
        avatar
    });

    return res.json(dev);

}

【讨论】:

  • 对此代码的一些解释/cmets将是一个很好的补充。
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-01
  • 2011-07-16
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
相关资源
最近更新 更多