Node.js 在nodejs中通过pg promise在对象内存储wkt列表

Node.js 在nodejs中通过pg promise在对象内存储wkt列表,node.js,pg-promise,Node.js,Pg Promise,我想通过nodejs和pg promise库将此对象存储到postgresql中: 这是我的方法: saveLineIntoDb({ 'line': linesGeoJson, 'date': user[i].date_created, 'user_id': user[i].uid, 'device_id': user[i].devid, }); 因此,我创建ColumnSet的顺序如下: const getPo

我想通过nodejs和pg promise库将此对象存储到postgresql中:

这是我的方法:

    saveLineIntoDb({
        'line': linesGeoJson,
        'date': user[i].date_created,
        'user_id': user[i].uid,
        'device_id': user[i].devid,
    });
因此,我创建ColumnSet的顺序如下:

const getPoint = col => {
    const p = col.source.line
    return p ? pgp.as.format('ST_GeomFromText($1)', p) : 'NULL';
};

这是将我的用户对象放入数据库的方法:

async function saveLineIntoDb(user) {
    logger.debug(`saveIntoDatabase method started`);
    try {
        db.result(await pgp.helpers.insert(user, cs))
            .then(data => {
                logger.debug(`saveIntoDatabase method ended`); 
            });
    } catch (error) {
        logger.error('saveIntoDatabase Error:', error);
    }
}
但不幸的是,它只在line user对象属性中存储一个LINESTRING。line属性是一个列表,如上图所示。
我认为这样pg promise就不能在对象内部迭代内部列表,我必须单独插入。

您使用的wait/async是错误的。将其更改为:

async function saveLineIntoDb(user) {
    logger.debug('saveIntoDatabase method started');
    try {
        await db.result(pgp.helpers.insert(user, cs));
        logger.debug('saveIntoDatabase method ended'); 
    } catch (error) {
        logger.error('saveIntoDatabase Error:', error);
    }
}
但不幸的是,它只在line user对象属性中存储一个LINESTRING。line属性是一个列表,如上图所示。我认为这样pg promise就不能在对象内部迭代内部列表,我必须单独插入


因此,您对该列使用方法init,并正确设置其格式。

感谢dude的提醒,但现在我可以通过pg promise将内部列表存储到db中了?我使用了init,并以我的方式插入了列表的一个索引[0]@维塔利-t@sayreskabir在init内部,您可以根据实现的任何数据结构格式化数据。我没有包括任何具体的例子,因为您没有详细说明线条的结构类型,从您的屏幕截图中也不清楚。
async function saveLineIntoDb(user) {
    logger.debug('saveIntoDatabase method started');
    try {
        await db.result(pgp.helpers.insert(user, cs));
        logger.debug('saveIntoDatabase method ended'); 
    } catch (error) {
        logger.error('saveIntoDatabase Error:', error);
    }
}