![](/img/trans.png)
[英]NodeJS MSSQL .query returning double data in both recordsets and recordset
[英]nodejs mssql not returning data on PUT
我有以下场景:
用户.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const db = require('./sql');
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.post('/api/v1/users', async function (req, res) {
res.json(await db.post_newUser(req.body));
});
sql.js
var connectionString = {
user: 'user',
password: 'password',
server: 'server',
database: 'db',
options: {
encrypt: false
}
}
const sql = require('mssql');
module.exports = {
post_newUser: async function(data) {
sql.connect(connectionString)
.then(pool => {
return pool.request()
.input('name', sql.VarChar, data.name)
.input('mail', sql.VarChar, data.mail)
.execute('sp_post_newUser');
})
.then(result => {
return JSON.parse(result);
})
.catch(err => {
// ... error checks
})
}
}
sp_post_newUser
CREATE PROCEDURE [dbo].[sp_post_newUser]
@name varchar(100),
@mail varchar(100)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].[users] ([name],[mail]) VALUES (@name, @mail)
DECLARE @userProfile varchar(MAX)
SET @userProfile = (SELECT * FROM users WHERE mail=@mail FOR JSON AUTO)
SELECT [userProfile] = @userProfile;
END
注意:我简化了代码以保持简短。 任何语法错误都应该被忽略。 :-)
我的存储过程将数据存储在数据库中。 同时,它返回一个应该由api返回的表,但它始终为空。
我认为 post_newUser 函数有问题。 此函数不返回数据。 试试这样的代码
module.exports = {
post_newUser: function(data) {
return sql.connect(connectionString)
...
或者在纯等待/异步上重写它
module.exports = {
post_newUser: async function(data) {
const pool = await sql.connect(connectionString);
const result = await pool.request()
.input('name', sql.VarChar, data.name)
.input('mail', sql.VarChar, data.mail)
.execute('sp_post_newUser');
return JSON.parse(result);
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.