【问题标题】:On node how to you perform an insert if doesn't exists如果不存在,在节点上如何执行插入
【发布时间】:2017-03-04 13:10:30
【问题描述】:

我的 rest 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);
    });
}

【问题讨论】:

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


【解决方案1】:

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

或者

您可以使用此示例作为参考(在冲突更新时使用 DUPLICATE KEY UPDATE) INSERT INTO table (a,b,c) VALUES (1,2, 3) 重复密钥更新 c=c+1;

【讨论】:

  • 谢谢,设法使它与 insert into fcmdb(userid, token) values('test1@example.com','HELLO') ON CONFLICT (userid) DO UPDATE set token='HELLO ';.我也忘记将用户 ID 设置为主键并修复它。
猜你喜欢
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 2011-04-19
  • 2011-03-10
  • 1970-01-01
相关资源
最近更新 更多