首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用node.js、db-迁移、postgres插入多个行

如何使用node.js、db-迁移、postgres插入多个行
EN

Stack Overflow用户
提问于 2020-11-12 09:50:23
回答 2查看 1K关注 0票数 0

我有一个角色迁移。

代码语言:javascript
复制
'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
};

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

代码语言:javascript
复制
'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)

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

EN

回答 2

Stack Overflow用户

发布于 2021-02-14 09:46:29

我有类似的问题,我设法把它们一个接一个地插入,把它们的承诺推入数组,然后调用所有的承诺。所以在你的情况下。

代码语言:javascript
复制
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)
};
票数 0
EN

Stack Overflow用户

发布于 2022-11-10 00:49:18

这就是我最后要做的事。希望它能帮到别人

代码语言:javascript
复制
'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) {
  // If there are roles, we need to delete them anyway
  const sql = 'DELETE FROM roles'
  db.runSql(sql, function (err) {
    if (err) return console.log(err)
  })

  return db.insert('roles', ['role_name'], ['admin']).then(
    function (result) {
      return db.insert('roles', ['role_name'], ['technician'])
    },
    function (err) {
      if (err) return console.log(err)
    },
  )
}

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,
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64801583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档