您好,我尝试将数据保存到数据库中,但返回错误:
/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))
}
});
});
任何人都知道我的代码出了什么问题 ???????
答案 0 :(得分:1)
如您所见
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>>
答案 1 :(得分:1)
首先设置:
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 中的值。