代码之家  ›  专栏  ›  技术社区  ›  Bibek

如果count value返回1,则对查询进行排序以对数据进行计数和更新

  •  1
  • Bibek  · 技术社区  · 6 年前

    我正在我的nodejs应用程序中构建一个注册系统。 我使用Sequelize JS作为ORM。 这是我的控制器

    exports.activateaccount=function(req,res,next){
    var token=req.params.token;
    indexmodel.activateemail(token,function(err,result){
        if(err) throw err;
        else{
            res.send('Activation Completed');
        }
    })
     }
    

    我接受令牌并将其发送给模型,如下所示:

    exports.activateemail=function(token,callback){
    partner.count({where:{token:token}}).then((partner)=>{
        Sequelize.query("UPDATE partners WHERE token='"+token+"' SET confirmed=1").then(partner=>{
            callback();
        })
    })
      }
    

    我想设置' 已确认 '这列' 令牌 '如果令牌匹配,则为1。 当前默认值为0。 有人知道密码吗? 我尝试使用sequelize.query,但它不是函数。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Vivek Doshi    6 年前

    而不是像这样使用原始查询:

    Sequelize.query("UPDATE partners WHERE token='"+token+"' SET confirmed=1")
    

    你应该使用连续的方式,这样你可以更好地处理它。

    更好的方法是:

    1. 以后你可以换成任何方言
    2. 你可以用钩子
    3. 其他人…

    但是用你的方法你不能做这样的事情。

    干得好:

    partner.update({ 'confirmed' : 1 },{ where : { 'token' : token , 'confirmed' : 0 }})
    .then(...) // handle update
    .catch(...); // handle error
    

    删除:

    partner.destroy({ where : { 'token' : token , 'confirmed' : 1 }});