Ошибка типа: this.build (...). Save - это не функция - PullRequest
0 голосов
/ 04 сентября 2018

привет, я пытаюсь сохранить данные в базе данных, но возвращается ошибка:

/home/ria/gajiandulu/gajiandulu-api/node_modules/sequelize/lib/model.js:2035
}).save(options);

Код:

var data = []
router.get('/',  (req, res,next) => {
    request('http://localhost:3000/api/v1/promos',  (error, response, body) => {
        if(error) { 
            res.json('An erorr occured')
            console.log(error)
        }
        else {
            let result = JSON.parse(body)
            res.send(result.data)
            data.push(result.data)
        }
        console.log(data + "ini")

        const save_data = Test.create(data)
        if (save_data) {
            return res
            .status(201)
            .json(true, 'data has ben retrieved')
        }else{
            return res.status(400).json(response(false, error))
        }
    });
});

кто-нибудь знает, что не так в моем коде * 1007 ??????? *

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Сначала вы установите:

var data = []

Далее объект помещается в массив.

data.push(result.data)

Проблема здесь:

Test.create(data)

.create требуется «специальный объект» , а не массив . Это должно быть похоже на следующее.

var create_data = { name_of_column_in_database_1: data_to_go_into_that_column_1, name_of_column_in_database_2: data_to_go_into_that_column_2 }

Теперь вы можете сказать:

Test.create(create_data)

Пример: У меня есть столбец с именем "ticker", и я хочу поместить некоторые данные, полученные из запроса, req.body.text.

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

var create_data = { ticker: req.body.text } Test.create(create_data)

Если вы все еще застряли, напишите имена столбцов, к которым вы хотите получить данные, и значения в result.data , которые вы хотите поместить в каждый столбец.

0 голосов
/ 04 сентября 2018

Как видите create функция принимает Object не Array,

public create(values: Object, options: Object): Promise

А то, что вы передаете, является Array:

var data = []; // <---- HERE
router.get('/',  (req, res,next) => {
    request('http://localhost:3000/api/v1/promos',  (error, response, body) => {
        ...
        else {
            ...
            data.push(result.data) // <---- HERE
        }
        console.log(data + "ini")
        ...
        const save_data = Test.create(data) // <---- HERE
        ...
    });
});

Если вы ищете создание нескольких строк, вы можете использовать bulkCreate вместо create

public static bulkCreate(records: Array, options: Object): Promise<Array<Model>>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...