添加项目以回复 KnexJs
Add items in reply to KnexJs
我有两个 table:销售(tbl_venda 葡萄牙语)和商品(tbl_venda_itens 葡萄牙语)。
使用下面的代码我可以发送销售数据table
const db = require('./db')
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => res.status(201).send(rows))
.catch(error => showError(error, res))
}
db.js
const options = {
client: 'mysql2',
connection: {
...
}
}
const knex = require('knex')(options)
module.exports = knex
但我需要添加每次销售的商品。我试着做这样的事情:
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => {
return rows.map(row => {
return db('tbl_venda_itens')
.select('tbl_venda_itens.id_venda_itens', 'tbl_venda_itens.id_venda',
'tbl_fornecedor.nome_fantasia AS fabricante', 'tbl_venda_itens.quantidade',
'tbl_estoque.descricao AS produto', 'tbl_venda_itens.valor_unitario',
'tbl_venda_itens.valor_total', 'tbl_venda_itens.cor', 'tbl_venda_itens.desconto',
'tbl_venda_itens.preco_final')
.join('tbl_fornecedor', 'tbl_venda_itens.id_fornecedor', 'tbl_fornecedor.id_fornecedor')
.join('tbl_estoque', 'tbl_venda_itens.id_estoque', 'tbl_estoque.id_estoque')
.where('id_venda', '=', row.id_venda)
.then(values => {
const newRow = { ...row, item: { ...values } }
return newRow
})
})
})
.then(values => res.status(201).send(values))
.catch(error => showError(error, res))
}
没用,我只收到空对象。
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => {
const requests = rows.map(row => {
return db('tbl_venda_itens')
.select('tbl_venda_itens.id_venda_itens', 'tbl_venda_itens.id_venda',
'tbl_fornecedor.nome_fantasia AS fabricante', 'tbl_venda_itens.quantidade',
'tbl_estoque.descricao AS produto', 'tbl_venda_itens.valor_unitario',
'tbl_venda_itens.valor_total', 'tbl_venda_itens.cor', 'tbl_venda_itens.desconto',
'tbl_venda_itens.preco_final')
.join('tbl_fornecedor', 'tbl_venda_itens.id_fornecedor', 'tbl_fornecedor.id_fornecedor')
.join('tbl_estoque', 'tbl_venda_itens.id_estoque', 'tbl_estoque.id_estoque')
.where('id_venda', '=', row.id_venda)
.then(values => {
const newRow = { ...row, itens: [...values] }
return newRow
})
.catch(error => showError(error, res))
})
return Promise.all(requests)
})
.then(values => res.status(201).send(values))
.catch(error => showError(error, res))
}
字体:https://www.freecodecamp.org/news/promise-all-in-javascript-with-example-6c8c5aea3e32/
我有两个 table:销售(tbl_venda 葡萄牙语)和商品(tbl_venda_itens 葡萄牙语)。
使用下面的代码我可以发送销售数据table
const db = require('./db')
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => res.status(201).send(rows))
.catch(error => showError(error, res))
}
db.js
const options = {
client: 'mysql2',
connection: {
...
}
}
const knex = require('knex')(options)
module.exports = knex
但我需要添加每次销售的商品。我试着做这样的事情:
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => {
return rows.map(row => {
return db('tbl_venda_itens')
.select('tbl_venda_itens.id_venda_itens', 'tbl_venda_itens.id_venda',
'tbl_fornecedor.nome_fantasia AS fabricante', 'tbl_venda_itens.quantidade',
'tbl_estoque.descricao AS produto', 'tbl_venda_itens.valor_unitario',
'tbl_venda_itens.valor_total', 'tbl_venda_itens.cor', 'tbl_venda_itens.desconto',
'tbl_venda_itens.preco_final')
.join('tbl_fornecedor', 'tbl_venda_itens.id_fornecedor', 'tbl_fornecedor.id_fornecedor')
.join('tbl_estoque', 'tbl_venda_itens.id_estoque', 'tbl_estoque.id_estoque')
.where('id_venda', '=', row.id_venda)
.then(values => {
const newRow = { ...row, item: { ...values } }
return newRow
})
})
})
.then(values => res.status(201).send(values))
.catch(error => showError(error, res))
}
没用,我只收到空对象。
const getSales = (req, res) => {
db('tbl_venda')
.select('tbl_venda.id_venda', 'tbl_venda.pedido', 'tbl_venda.data_venda',
'tbl_venda.data_entrega', 'tbl_cliente.nome AS cliente', 'tbl_vendedor.nome AS vendedor',
'tbl_venda.obs', 'tbl_venda.total_pagar', 'tbl_venda.total_bruto', 'tbl_venda.id_loja',
'tbl_venda.horadavenda')
.join('tbl_cliente', 'tbl_cliente.id_cliente', 'tbl_venda.id_cliente')
.join('tbl_vendedor', 'tbl_vendedor.id_vendedor', 'tbl_venda.id_vendedor')
.where('data_venda', '>=', req.body.dateInitial)
.where('data_venda', '<=', req.body.dateFinal)
.orderBy('id_venda')
.then(rows => {
const requests = rows.map(row => {
return db('tbl_venda_itens')
.select('tbl_venda_itens.id_venda_itens', 'tbl_venda_itens.id_venda',
'tbl_fornecedor.nome_fantasia AS fabricante', 'tbl_venda_itens.quantidade',
'tbl_estoque.descricao AS produto', 'tbl_venda_itens.valor_unitario',
'tbl_venda_itens.valor_total', 'tbl_venda_itens.cor', 'tbl_venda_itens.desconto',
'tbl_venda_itens.preco_final')
.join('tbl_fornecedor', 'tbl_venda_itens.id_fornecedor', 'tbl_fornecedor.id_fornecedor')
.join('tbl_estoque', 'tbl_venda_itens.id_estoque', 'tbl_estoque.id_estoque')
.where('id_venda', '=', row.id_venda)
.then(values => {
const newRow = { ...row, itens: [...values] }
return newRow
})
.catch(error => showError(error, res))
})
return Promise.all(requests)
})
.then(values => res.status(201).send(values))
.catch(error => showError(error, res))
}
字体:https://www.freecodecamp.org/news/promise-all-in-javascript-with-example-6c8c5aea3e32/