在节点上如何执行插入(如果不存在)

时间:2016-10-22 08:23:27

标签: node.js node-postgres pg-promise

我的其他api调用Put函数来在Postgre-sql上创建firebase令牌。
但是,我意识到每当令牌被刷新时,将为同一用户添加一个新行。
如何进行插入(如果存在则执行插入,如果不存在则更新)。
我已经尝试过冲突更新,但它不起作用。

代码在这里:

function createUserToken(req, res, next) {
  var userid = req.user.email;
  db.none('insert into fcmdb(userid, token)'+
    'values($1, $2) on conflict update',
    [userid,req.body.token])
    .then(function () {
      res.status(200)
        .json({
          status: 'success',
          message: 'Inserted token'
        });
    })
    .catch(function (err) {
      return next(err);
    });
}

1 个答案:

答案 0 :(得分:1)

这只是因为在插入查询的帮助下直接插入数据。 您应该做的首先是您需要在userId的帮助下检查您的数据库中存在的用户ID是什么然后您需要更新其他只是插入就像您正在做的那样

您的工作方式可以使用此示例作为参考(使用针对冲突更新的重复更新)INSERT INTO表(a,b,c)VALUES(1,2, 3)   ON DUPLICATE KEY UPDATE c = c + 1;