我是Node js的新手。我已经为我的申请使用了express和sequelize。
这是我的路由器功能。
router.post('/add-merchant', [
check('name').not().isEmpty(),
check('city').not().isEmpty(),
check('state').not().isEmpty(),
check('country').not().isEmpty(),
], (req, res, next) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.json({ errors: errors.array()});
}
var merchant = merchantService.addMerchant(req);
return res.json(merchant)
} catch (error) {
return res.json({"status": "error", "message": error.message})
}
});
我已经创建了名为mercerService.js的文件
我已经添加了用于在商人服务.js中插入数据的代码,并尝试过这样
var merchant = merchantService.addMerchant(req);
但是我无法从商家服务获得任何数据。这是我的商家服务代码
var models = require(“ ../ models”);
var merchantService = {
addMerchant: (req) => {
models.merchants.create(req.body).then((merchant) => {
return merchant.dataValues
});
}
}
module.exports = merchantService;
我找不到问题。请帮助任何人解决此问题。
预先感谢
答案 0 :(得分:1)
您正在以同步方式管理异步任务,该任务不起作用。
您应该以这种方式更改请求处理程序:
CREATE FUNCTION [dbo].[fn_string_split](@str NVARCHAR(MAX),
@delimiter NVARCHAR(255))
RETURNS TABLE
AS
RETURN
WITH a
AS (SELECT CAST(0 AS BIGINT) AS idx1,
CHARINDEX(@delimiter, @str) idx2
UNION ALL
SELECT idx2 + 1,
CHARINDEX(@delimiter, @str, idx2 + 1)
FROM a
WHERE idx2 > 0)
SELECT SUBSTRING(@str, idx1, COALESCE(NULLIF(idx2, 0), LEN(@str) + 1) - idx1) AS value,
ROW_NUMBER() OVER(
ORDER BY idx1) RN
FROM a;
并按以下方式修复您的商家服务(请参见DECLARE @Invoices AS TABLE
(InvoiceNumber NVARCHAR(50),
ProductIDCSV NVARCHAR(MAX)
);
INSERT INTO @Invoices
VALUES
('123','Prod123,Prod456,Prod789'),
('456','Prod987,Prod654,Prod321');
SELECT I.*,
P.Value AS ProductID
FROM @Invoices I
CROSS APPLY dbo.fn_string_split(I.ProductIDCSV, ',') P;
值以启动承诺链):
router.post('/add-merchant', [
check('name').not().isEmpty(),
check('city').not().isEmpty(),
check('state').not().isEmpty(),
check('country').not().isEmpty(),
], (req, res, next) => {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.json({ errors: errors.array() });
}
merchantService.addMerchant(req).then((merchant)=>{
res.json(merchant)
})
} catch (error) {
return res.json({ "status": "error", "message": error.message })
}
});