pg-promise:在第二个查询中使用第一个查询的结果

时间:2019-01-29 14:38:37

标签: javascript node.js mocha pg-promise

我有以下问题: 我想在第一个查询中获取表中id的最大值,然后将max_id + 1值传递给第二个插入查询。 怎么做?

我有以下代码,它对我有用,但我想在第二个查询中使用call getMaxId函数使getMaxId()更通用

    var max_id=0;
    function getMaxId(table_name) {
      db.one(`SELECT MAX(id) FROM ${table_name}`)
        .then(data => {
          logger.info('max id: ' + data.max + ' ' + (data.max + 1));
          max_id = data.max+1
          return data.max+1
        })
    }


    getMaxId('restaurant_calendar');

    it('should add restaurant calendar record for dine_in (restaurant_calendar)', () => {
      queryText3 = `INSERT INTO restaurant_calendar (id, valid_date, valid_all_day, from_hour, to_hour, created_by, created_at, is_active, delivery_type, order_source )
      VALUES (${max_id}, '${utils.getTodayDate()}', TRUE, '','', 'mk', '2019-01-14 10:13:11.815+00', TRUE, 'DINE_IN', 'ALL' )`
      return db.none(queryText3)
        .then(data => { console.log(queryText3); })
        .catch(error => { console.log('ERROR:', error, '  ', queryText3); });
    });

因此,如果我将getMaxId('restaurant_calendar')而不是{max_id}作为值,则会得到未定义的值而不是max_id。 在第二个查询中的值内插入getMaxId(table_name)调用的最佳方法是什么?

0 个答案:

没有答案