Я хочу сохранить этот объект в postgresql с помощью nodejs и библиотеки pg-обещания: ![enter image description here](https://i.stack.imgur.com/LYNtk.png)
Это мой метод:
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';
};
и
const cs = new pgp.helpers.ColumnSet([
{
name: 'id',
mod: ':raw',
init: generate_id
},
'device_id',
'user_id',
{
name: 'created_date',
prop: 'date'
},
{
name: 'st_astext',
mod: ':raw',
init: getPoint
}
], {
table: 'scheduled_locations'
});
Это метод, который заносит мой пользовательский объект в базу данных:
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);
}
}
Но, к сожалению, он просто хранитодин из LINESTRING
внутри line
атрибута объекта пользователя.Атрибут line - это список, который вы видите на изображении выше.Я думаю, что таким образом pg-обещание не может перебрать внутренний список внутри объекта, и мне приходится вставлять отдельно.