Я новичок и изучаю Node.js и никогда не сталкивался с анализом массива json.У меня есть следующий сценарий.
Наконец, я записываю значение переменной результата:
var json = '{
"recordsets": [
[
{
"@responseMessage": "OK"
}
]
],
"recordset": [
{
"responseMessage": "OK"
}
],
"output": {},
"rowsAffected": [
1
]
}';
obj = JSON.parse(json);
console.log(obj.count);
console.log(obj.responseMessage);
app.post('/loginUser', function (req, res) {
var pum = req.body.pum; //user mail or user phone
var pw = req.body.pw; //user password
sql.connect(config, function (err) {
if (err) console.log(err);
var request = new sql.Request();
let query = "DECLARE @responseMessage nvarchar(2) EXEC [dbo].[LoginUser] @pum = N'" + pum + "', @pPwd = N'" + pw + "', @responseMessage = @responseMessage OUTPUT SELECT @responseMessage as N'@responseMessage'"; //SP in a SQL Server
request.query(query, function (err, recordset) {
if (err) {
console.log(err);
sql.close();
}
sql.close();
res.json(recordset);
console.log("IP :" + req.ip + "\n");
console.log(recordset);
});
});
});
Мне нужен анализ Хранимая процедура Объявлен вывод @responseMessage.Моя хранимая процедура Код SQL Server здесь:
USE [DB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[LoginUser]
@pum NVARCHAR(254), --user mail or userphone
@pPwd NVARCHAR(50),
@responseMessage NVARCHAR(250)='' OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @userID INT
IF EXISTS (SELECT TOP 1 UserID FROM [dbo].[User] WHERE (userphone=@pum or usermail=@pum))
BEGIN
SET @userID=(SELECT UserID FROM [dbo].[User] WHERE (userphone=@pum or usermail=@pum) AND PasswordHash=HASHBYTES('SHA2_512', @pPwd+CAST(Salt AS NVARCHAR(36))))
IF(@userID IS NULL)
SET @responseMessage='IP' --'Incorrect password'
ELSE
SET @responseMessage='OK' --'User successfully logged in'
END
ELSE
SET @responseMessage='IL' --'Invalid login'
END
Выход Node.js:
{ recordsets: [ [ [Object] ] ],
recordset: [ { '@responseMessage': 'OK' } ],
output: {},
rowsAffected: [ 1 ] }
РЕДАКТИРОВАТЬ РЕШЕНИЕ:
ВАРИАНТ 1:
var myRS = recordset;
console.log(myRS.recordsets[0][0]["@responseMessage"]);
ВАРИАНТ 2: Использование примера Regex: https://rubular.com/r/jXv0bcaIkPzVOD