2015-09-20 68 views
1

我使用sails.js v0.11.1通過請求主體藍圖動作模型。 在我routes.js文件我有這樣的路線寫:綁定Sails.js路線

'POST /user' : { 
    model:  'user', 
    blueprint: 'create' 
}, 

我的身體發送POST請求(通過postman),以/user與此:

{ 
    userName : "firstUser", 
    password : "secretPwd5779", 
    firstName : "William", 
    lastName : "Askey" 
} 

,但我得到這個迴應:

{ 
    "error": "E_VALIDATION", 
    "status": 400, 
    "summary": "4 attributes are invalid", 
    "model": "User", 
    "invalidAttributes": { 
     "userName": [ 
      { 
       "rule": "string", 
       "message": "`undefined` should be a string (instead of \"null\", which is a object)" 
      }, 
      { 
       "rule": "required", 
       "message": "\"required\" validation rule failed for input: null" 
      } 
     ], 
     "password": [ 
      { 
       "rule": "string", 
       "message": "`undefined` should be a string (instead of \"null\", which is a object)" 
      }, 
      { 
       "rule": "required", 
       "message": "\"required\" validation rule failed for input: null" 
      } 
     ], 
     "firstName": [ 
      { 
       "rule": "string", 
       "message": "`undefined` should be a string (instead of \"null\", which is a object)" 
      }, 
      { 
       "rule": "required", 
       "message": "\"required\" validation rule failed for input: null" 
      } 
     ], 
     "lastName": [ 
      { 
       "rule": "string", 
       "message": "`undefined` should be a string (instead of \"null\", which is a object)" 
      }, 
      { 
       "rule": "required", 
       "message": "\"required\" validation rule failed for input: null" 
      } 
     ] 
    } 
} 

根據Sails.js documentation我寫了正確的路線。

通過URL參數,使這一請求(即發出請求到/user?userName=firstUser&password=secretPwd5779&firstName=William&lastName=Askey作品就好了我如何能得到這個無需通過URL參數發送數據的工作

+0

您能不能告訴我們的頁面(表單),JavaScript的,你發佈的數據? – num8er

+0

我使用REST客戶郵差(https://www.getpostman.com)提出這項要求 – Xecure

回答

2

@ num8er的回答對我來說非常有洞察力(作爲新手sailsjs /節點程序員),但是我的問題實際上是由非法pm2實例引起的。

我發出請求被髮送到一個流氓實例,其中我寫的路由/變化並未在代碼中體現。希望這可以幫助那裏的人。

2

標準方式:?

這是您的形式:

<form class="ajax" method="post" action="/user"> 
<input name="userName"> 
<input name="password"> 
<input name="firstName"> 
<input name="lastName"> 
<button type="submit">CREATE</button> 
</form> 
<div id="result"></div> 

,這是前端部分的js(需要的jquery):

$(function(){ 
    $('form.ajax').on('submit', function(e){ 
     e.preventDefault(); 
     var method = $(this).attr('method'); 
     var url = $(this).attr('action'); 
     var data = $(this).serializeArray(); 

     $.ajax({ 
     url: url, 
     method: method, 
     data: data, 
     success: function(response) { 
      $('#result').html(JSON.stringify(response)); 
     }, 
     error: function() { 
     alert('Error! Try again later.'); 
     } 
     }); 
    }); 
}); 

但你發送JSON的身體,所以必須啓用中間件將JSON身體轉換成request.body。
它被稱爲body-parser。查看屏幕截圖:http://joxi.ru/752aJJbhj45DA0

+0

實際上我不是通過表單,而是一個REST客戶端 – Xecure

+0

閱讀非常非常最後兩句 – num8er

+0

嗯發出請求,我已經取消了該行,但仍然沒有任何評論。這是我的文件看起來像:https://infinit.io/_/nxNmm9w,我從服務器獲取響應:'不能得到/用戶/ create' – Xecure