POST请求将空值插入MS SQL数据库

时间:2018-02-19 05:43:26

标签: node.js angular express post

这是我的代码 -

onSubmit(){ 
  var headers = new Headers();   
  headers.append('Content-Type', 'application/x-www-form-urlencoded');
  let postParams = {
    firstName : this.firstName, 
    lastName : this.lastName,
    gender: this.myGender,
    myDate : this.myDate
  };

  this.http.post("ip/member", {postParams, headers}).subscribe(data => {
    console.log(data);
  }, error => {
    console.log(error); // Error getting the data
  });
}

我没有很多使用Angular的经验,所以我不太清楚发生了什么,但这是在我的MS SQL数据库中插入空值。这就是Node API的样子:

app.post('/member', function(req, res) {
    console.log("creating member\n");
    request = new Request("INSERT INTO [dbo].[tblMemberInfo] VALUES (@firstName, @lastName, @gender, @dateOfBirth);", function(err) {  
        if (err) {  
            console.log(err);}  
        });  
        request.addParameter('firstName', TYPES.VarChar , req.query.firstName);  
        request.addParameter('lastName', TYPES.VarChar, req.query.lastName);  
        request.addParameter('gender', TYPES.VarChar, req.query.gender); 
        request.addParameter('dateOfBirth', TYPES.Date, req.query.dateOfBirth); 

        request.on('doneProc', function(rowCount, more) {  
            console.log('Member added');  
        });       
       connection.execSql(request);      
 })

我尝试使用Postman进行插入并且工作正常,而且我还确保我在Angular中的所有postParams都有值。任何人都知道发生了什么?

2 个答案:

答案 0 :(得分:0)

只需更改此行:

this.http.post("ip/member", {postParams, headers})

致:

import { HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({
    'Content-Type' : 'application/x-www-form-urlencoded'
  })
};

this.http.post("ip/member", postParams, httpOptions);

根据Angular Offical Doc:

post(url: string, body: any, options?: RequestOptionsArgs)

答案 1 :(得分:0)

我不认为你的问题与Angular有关。我看到你的nodeJS出错了。您无法使用req.query。这是一个表格帖我相信所以表格将作为正文发布。我看到你正在使用快递。因此,您应该使用req.body而不是req.query

注意:如果您使用body-parser您必须使用body-parser快速中间件才能从POST请求中解析正文。< / p>

第1步:npm install --save body-parser

第2步:在包含express的文件中添加。

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

希望它有所帮助!!