node-postgres create database

后端 未结 4 1801
孤城傲影
孤城傲影 2021-01-03 20:45

I am using node-postgres, and at the beginning of my application I want to check whether the database exists or not. So my workflow idea is as following:

  1. Check
4条回答
  •  伪装坚强ぢ
    2021-01-03 21:03

    This is a bit old but I just want to share how I handled this kind of setup.

    You need to call the third param from the callback which is the done from pg.connect(conn, (err, client, done) => {}). This will release the connection and bring back to pool.

     async.series([
       done => {
         pg.connect(connPrimary, (err, client, releaseConn) => {
          if (err) return done(err)
    
          client.query(`CREATE DATABASE ${conf.database}`, (err) => {
            if (err && !~err.message.indexOf('already exists')) {
              return done(err)
            }
    
            client.end()
            releaseConn()
            done()
          })
        })
      },
      done => {
        let connSecondary = `postgres://${conf.user}:${conf.password}@${conf.host}:${conf.port}/${conf.database}`
    
        pg.connect(connSecondary, (err, client, releaseConn) => {
          if (err) return done(err)
    
          let createTableQuery = `CREATE TABLE IF NOT EXISTS test_table(_id bigint primary key, co2_field varchar(40) NOT NULL, temp_field int NOT NULL, quality_field decimal NOT NULL, reading_time_field timestamp NULL)`
    
          client.query(createTableQuery, err => {
            if (err) return done(err)
    
            releaseConn()
            done()
          })
        })    
      }
    ], err => {
      should.ifError(err)
      doneInit()
    })
    

提交回复
热议问题