Javascript 如何在一个承诺中进行多个查询
我使用React使用NodeJS将数据发送到我的PotgreSQL数据库。数据在第一次插入和第二次插入时都插入得很好,但我唯一的问题是在上。然后在第二次插入后,它没有给我响应Javascript 如何在一个承诺中进行多个查询,javascript,node.js,postgresql,Javascript,Node.js,Postgresql,我使用React使用NodeJS将数据发送到我的PotgreSQL数据库。数据在第一次插入和第二次插入时都插入得很好,但我唯一的问题是在上。然后在第二次插入后,它没有给我响应 const addData = (request, response) => { const uuid = uuidv4(); db.pool.query('INSERT INTO albums (title, date, description, id) VALUES ($1, $2, $3, $4) ON C
const addData = (request, response) => {
const uuid = uuidv4();
db.pool.query('INSERT INTO albums (title, date, description, id) VALUES ($1, $2, $3, $4) ON CONFLICT (id) DO NOTHING RETURNING *' , [request.body.title, request.body.date, request.body.description, uuid])
.then(res => {
console.log('INSERT ' + JSON.stringify(res.rows[0]));
}).then(() => {
for (let i = 0; i < request.body.files.length; i++) {
db.pool.query('INSERT INTO songs (id, name, link, index) VALUES ($1, $2, $3, $4) ON CONFLICT (album_id, index) DO NOTHING RETURNING *', [uuidv4(), request.body.files[i].name, request.body.files[i].link, request.body.files[i].index])
}}).then(res => {
console.log('INSERT INTO songs ' + JSON.stringify(res));
}).catch(error => console.log(error));
}
我没有得到第二次插入的响应有什么错?Tl;博士
这将使您的代码正常工作:
const addData=请求,响应=>{
常数uuid=uuidv4;
db.pool.query“插入相册标题、日期、说明,冲突id上的id值$1、$2、$3、$4不做任何返回*”,[request.body.title,request.body.date,request.body.description,uuid]
.thenres=>{
log'INSERT'+JSON.stringifyres.rows[0];
}.然后=>{
常量dbQueryPromises=[];
对于let i=0;i除此之外,您实际上一次创建了多个承诺,我建议您使用'Promise.all,如果您希望等待所有承诺都生效。您需要在中返回一个承诺。然后=>{…@JaromandaX好的。那会是什么样子?首先有一个return语句-但对于其中的多个查询来说并不是那么简单-可能需要一个.mapif request.body.files是一个数组,那么使用数组映射方法可以使这段代码简单得多