【问题标题】:My update function in knex js is not working我在 knex js 中的更新功能不起作用
【发布时间】:2021-03-30 19:23:17
【问题描述】:

我有一张表 - available_trucks 我想在其中更新列 - available_date。 我计划每天午夜更新这个可用日期,但现在出于测试目的,我尝试使用 nodejs 中的这个库每隔一分钟更新一次

https://www.npmjs.com/package/node-schedule

我也使用 knex js 作为 sql builder。

我的代码

服务器 JS(主文件)

const truckJob = require('./jobs/trucks-job');
schedule.scheduleJob('*/1 * * * *', (fireDate) => { 
    console.log('This job was supposed to run at ' + fireDate + ', but actually ran at ' + new Date());
    truckJob.updateAvailableTrucks();
}) 

卡车作业

const db = require('../db/knex');

function updateAvailableTrucks() {
    db("available_trucks").update('available_date', '2020-12-13T04:47:56.126').where('truck_number', 
    '228');
}

因此,出于测试目的,我在这里输入硬编码的日期值,其中 truck_number 是 228。我想提一下,我检查了我的 available_trucks 中的数据 - 表存在所以在这里我尝试更新现有的列我的桌子。但是在再次执行脚本一分钟后,表中的列没有更新。此外,当我尝试从某个表中获取数据时,一切都运行良好。 例如

function getAll() {
  return db.select('*').from('available_trucks');
}

我的 knex 配置 KNEX JS

const config = require('../knexfile.js');
const pg = require('pg');
const PG_DECIMAL_OID = 1700;
// workaround that ensures numeric types are read as numbers, not strings
pg.types.setTypeParser(PG_DECIMAL_OID, parseFloat);
module.exports = require('knex')(config);

KNEX 文件 JS

const config = {
  client: 'pg',
  connection: {
    host:     process.env.POSTGRES_HOST || 'localhost',
    database: process.env.POSTGRES_DB || 'some_db_name',
    user:     process.env.POSTGRES_USER || 'postgres',
    password: process.env.POSTGRES_PASSWORD || 'xx
  },
  pool: { min: 0, max: 10 },
  migrations: { directory: './db/migrations' }
};
module.exports = config;

【问题讨论】:

    标签: node.js node-schedule knexjs


    【解决方案1】:

    根据我的短暂经验,出于某种奇怪的原因,update 使用 knex 仅在后跟 .catch()

    时才有效

    一般示例:

    没用

    knex('table')
      .update({column: value})
      .where({column: value});
    

    作品

    knex('table')
      .update({column: value})
      .where({column: value})
      .catch((err) => console.log(err));
    

    在你的情况下尝试:

    db("available_trucks")
      .update('available_date', '2020-12-13T04:47:56.126')
      .where('truck_number', 
        '228')
      .catch((err) => console.log(err));
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      相关资源
      最近更新 更多