Я использую loopback3 api для приложения для создания новых пользователей. Мой удаленный метод '/ newUser' выполняет хранимую процедуру, но не может создать нового пользователя.
Поток приложений: создайте нового пользователя, запустив 3 хранимые процедуры: usp_CreateUser
, которая возвращает UserID
через @UserIdOutputParam
. usp_CreatePhone
и usp_CreateEmail
выполняются изнутри usp_CreateUser
и используют @UserIdOutputParam
в качестве FK для создания связанного телефона и электронной почты.
Проблема: запуск удаленного метода 'newUser' в loopback, который выполняет usp_CreateUser
, @UserIdOutputParam
не может быть возвращен обратно в usp_CreateUser
, и ошибки кода там / новый пользователь не создано.
Попробовал жестко закодировать UserIdOutputParam
в NULL, попытался пропустить его.
Я рассмотрел примеры параметров node-mssql & tediousjs, но не вижу, как их использовать с моим удаленным методом с обратной связью.
* * Узел тысячу двадцать-один-MSSQL:
const request = new sql.Request()
request.input('input_parameter', sql.Int, value)
request.output('output_parameter', sql.Int)
request.execute('procedure_name', (err, result) => {
утомительным:
request.addOutputParameter('number', TYPES.Int);
request.addOutputParameter('string', TYPES.VarChar);
Вот мой код
'use strict';
module.exports = function (Person) {
var server = require('../../server/server');
var ds = server.dataSources.MSSQL_DB;
Person.newUser = async function (
firstname,
lastname,
phonenumber,
emailaddress,
// useridoutputparam,
request
) {
request = ("EXEC dbo.usp_CreateUser" +
"@FirstName='" + firstname + "', "
+ "@LastName='" + lastname +
+ "@PhoneNumber=" + phonenumber + ", "
+ "@EmailAddress=" + emailaddress + ", "
+ "@UserIdOutputParam=" + null
+ ";");
ds.connector.execute(request, function (err, data) {
console.log(request);
if (err) {
console.log(err);
} else {
console.info("data", data);
return (err, data);
;
};
}
);
};
Person.remoteMethod('newUser', {
accepts: [
{ arg: 'firstname', type: 'string', required: false },
{ arg: 'lastname', type: 'string', required: false },
{ arg: 'phonenumber', type: 'number', required: false },
{ arg: 'emailaddress', type: 'string', required: false },
{ arg: 'useridoutputparam', type: 'string', required: false }
],
http: { path: '/newUser', verb: 'post' },
returns: { arg: 'data', type: 'string' };
}
);
//more info: https://loopback.io/doc/en/lb3/Remote-methods.html
};
Я ожидаю, что удаленный метод выполнит хранимую процедуру, но он не завершится без выходного параметра.
Ошибка с консоли:
EXEC dbo.usp_CreateUser @ FirstName = 'Buzz', @ LastName = 'Lightyear', @ EmailAddress = 'blightyear @ allenmatkins.com', @ PhoneNumber = 7072738888, {RequestError: Процедура или функция 'usp_CreateUser' ожидает параметр '@ UserIdOutputParam ', который не был предоставлен.