Sequelize: Query Возвращает String Array как String, а не как Arring of Strings? - PullRequest
0 голосов
/ 08 марта 2020

У меня есть таблица Postgres с полем в ней с именем specialties. Поле определено как:

const myModel = db.define('my_model', {
    id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true},
    createdAt: {type: Sequelize.DATE},
    updatedAt: {type: Sequelize.DATE},
    jobName: {type: Sequelize.STRING},
    specialties: {type: Sequelize.ARRAY(Sequelize.STRING)}
});

Я заполнил содержимое поля specialties, импортировав файл .csv со строками в следующем формате:

["mySpeciality_1", "mySpeciality_2", "mySpeciality_3"]

I ' m запрашивает таблицу следующим образом:

return Promise.resolve()
    .then(() => {
        let specialties = connectors.myModel.findAll({
            where: {'jobName': jobName}
        }).then((specialties) => specialties.map((item) => item.dataValues));
        return specialties;
    })
    .then(([specialties, metaData]) => {
        [.....]

specialties возвращается как объект с полем с именем specialties, который содержит строку, которая выглядит следующим образом:

["mySpeciality_1", "mySpeciality_2", "mySpeciality_3"]

Разве я импортировать поле массива строк specialties со строками в неправильном формате? Или же мне нужно написать запрос на продолжение по-другому?

1 Ответ

0 голосов
/ 08 марта 2020

Нашел это.

Прежде всего, я определял поле как изменяющийся символ []. Это не похоже на работу. Кажется, хочет быть текст []. Вот как это выглядит в клиенте Valentina postgres:

enter image description here

Я импортировал поля из .csv в следующем формате:

 {mySpeciality_1, mySpeciality_2, mySpeciality_3}

Вот рабочий запрос на продолжение:

return Promise.resolve()
    .then(() => {
        let theJob = connectors.myModel.findAll({
            where: {'jobName': jobName}
        }).then((theJob) => theJob.map((item) => item.dataValues));
        return theJob;
    })
    .then(([theJob, metaData]) => {
        let specialties = theJob.specialties;
...