1

postgres db に挿入したい大規模なデータセットがあります。このように pg-promise を使用してこれを実現できます

function batchUpload (req, res, next) {
    var data = req.body.data;
    var cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email'], { table: 'customer' });
    var query = pgp.helpers.insert(data, cs);
    db.none(query)
    .then(data => {
        // success;

    })
    .catch(error => {
        // error;
        return next(error);
    });
}

データセットは、次のようなオブジェクトの配列です。

           [
                {
                    firstname : 'Lola',
                    lastname : 'Solo',
                    email: 'mail@solo.com',
                },
                {
                    firstname : 'hello',
                    lastname : 'world',
                    email: 'mail@example.com',
                },
                {
                    firstname : 'mami',
                    lastname : 'water',
                    email: 'mami@example.com',
                }
            ]

added_at課題は、データセットに含まれていない列を持っていることnullです。クエリにレコードを挿入するたびにタイムスタンプを追加するにはどうすればよいですか。

4

1 に答える 1

2

ColumnConfig構文に従って:

const col = {
    name: 'added_at',
    def: () => new Date() // default to the current Date/Time
};
    
const cs = pgp.helpers.ColumnSet(['firstname', 'lastname', 'email', col], { table: 'customer' });

または、 ColumnConfigは非常に柔軟であるため、さまざまな方法で定義できます。

例:

const col = {
    name: 'added_at',
    mod: ':raw', // use raw-text modifier, to inject the string directly
    def: 'now()' // use now() for the column
};

または、プロパティinitを使用して値を動的に設定できます。

const col = {
    name: 'added_at',
    mod: ':raw', // use raw-text modifier, to inject the string directly
    init: () => {
       return 'now()';
    }
};

詳細については、ColumnConfig構文を参照してください。

PS私はpg-promiseの作者です。

于 2016-11-28T09:29:37.173 に答える