【问题标题】:How to insert multiple rows using node.js, db-migrate, postgres如何使用 node.js、db-migrate、postgres 插入多行
【发布时间】:2021-02-24 07:41:21
【问题描述】:

我有一个角色迁移。

'use strict';

var dbm;
var type;
var seed;

/**
  * We receive the dbmigrate dependency from dbmigrate initially.
  * This enables us to not have to rely on NODE_PATH.
  */
exports.setup = function (options, seedLink) {
  dbm = options.dbmigrate;
  type = dbm.dataType;
  seed = seedLink;
};

exports.up = function (db) {
  return db.createTable('roles', {
    role_id: { type: 'int', primaryKey: true, unique: true, autoIncrement: true },
    role_name: 'text',
  })
}

exports.down = function (db) {
  return db.dropTable('roles')
};

exports._meta = {
  "version": 1
};

现在,我想设置一些默认角色。我该怎么做?

'use strict';

var dbm;
var type;
var seed;

/**
  * We receive the dbmigrate dependency from dbmigrate initially.
  * This enables us to not have to rely on NODE_PATH.
  */

exports.setup = function (options, seedLink) {
  dbm = options.dbmigrate;
  type = dbm.dataType;
  seed = seedLink;
};

exports.up = function (db) {
  const sql = "DELETE FROM roles"
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })

  return db.insert(
    'roles',
    ['user_role'],
    [['admin', 'technician']]
  )
};

exports.down = function (db) {
  const sql = "DELETE FROM roles"
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })
  return null
};

exports._meta = {
  "version": 1
};

无论我尝试什么,我总能得到

在“'admin);”处或附近未终止的带引号的字符串

作为一个错误。

它在 docker 容器中运行,我已经为两个迁移运行了 run migrate_up

文档说明我需要这样做:insert(tableName, columnNameArray, valueArray, callback)

那么,如何在一个语句中添加多行?

【问题讨论】:

    标签: node.js postgresql insert migration dbmigrate


    【解决方案1】:

    我有类似的问题,我设法将它们一一插入,将它们的 Promise 推入数组,然后在它们上调用 Promise。所以在你的情况下。

    exports.up = function (db) {
      const sql = "DELETE FROM roles"
      db.runSql(sql, function (err) {
        if (err) return console.log(err)
      })
      
    
      const promises = [];
    
      promises.push(db.insert('roles', { user_role : 'admin'}))
      promises.push(db.insert('roles', { user_role : 'technician'}))
    
      return Promise.all(promises)
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      • 2020-01-16
      • 1970-01-01
      • 2022-12-17
      • 2017-04-26
      • 2011-12-16
      • 2016-05-01
      相关资源
      最近更新 更多