Sequelize查询中的调用过程产生两次。
return await sequelize.query('CALL get_products();', { type: sequelize.QueryTypes.SELECT});
//途中
module.exports = (app) => {
let router = require('express').Router();
const verifyToken = require('../../middlewares/verifyToken');
const productController = require('../../controllers/api/productController');
router.get('/products', verifyToken, productController.getProducts);
router.get('/products/:productId', verifyToken, productController.getProduct);
app.use('/api', router);
};
// productController.js
const db = require('../../models');
const Product = db.products;
const sequelize = db.sequelize;
exports.getProducts = async (request, response) => {
let responseData = {};
let products = [];
// Get products
products = await sequelize.query('CALL get_products();')
.then(data => {
return data;
})
.catch(error => {
//
});
//-------------
// Set response data
if (products) {
responseData = {
status: true,
message: 'Products found.',
data: {
products: products
}
};
} else {
responseData = {
status: false,
message: 'Products not found.',
data: null
};
}
//------------------
return response.status(200).json(responseData);
即使已删除查询代码,console.log在函数中也会触发两次。看起来这是我的代码错误。
答案 0 :(得分:0)
错误在于同时拥有await
和.then(...).catch(...)
。
根据您的喜好,您应该仅使用这两种结构之一。
此处带有.then()。catch()
const db = require('../../models');
const Product = db.products;
const sequelize = db.sequelize;
exports.getProducts = (request, response) => {
let responseData = {};
let products = [];
// Get products
products = await sequelize.query('CALL get_products();').then(data => {
// Set response data
if (products) {
responseData = {
status: true,
message: 'Products found.',
data: {
products: products
}
};
} else {
responseData = {
status: false,
message: 'Products not found.',
data: null
};
}
}).catch(error => {
// handle any error
});
}
在这里等待
const db = require('../../models');
const Product = db.products;
const sequelize = db.sequelize;
exports.getProducts = async (request, response) => {
let responseData = {};
let products = [];
// Get products
products = await sequelize.query('CALL get_products();');
// Set response data
if (products) {
responseData = {
status: true,
message: 'Products found.',
data: {
products: products
}
};
} else {
responseData = {
status: false,
message: 'Products not found.',
data: null
};
}
}
我总是喜欢使用.then().catch()
语法,因此我真的不知道如何使用await
模式处理任何错误。也许可以尝试一下。我希望这有帮助。