簡體   English   中英

如何檢查請求是否在Total.js控制器中具有發布數據

[英]How to check if a request has post data in a Total.js controller

我想要一種解決方案,通過驗證用戶是否提交了一些數據來保持對同一功能的查看和發布操作。

我的total.js控制器就是這樣

# framework
exports.install = (framework) ->
  framework.route "/subscribe", subscribe
  framework.route "/subscribe", subscribe, ['post']

# subscribe form and action
subscribe = ->
  self = this
  post = self.post

  if post
    Subscriber = self.model('subscriber')
    Subscriber.save post

  self.view "form"

問題是當我僅查看頁面(不提交數據)時, post{} ,因此它總是在if輸入。

如果我與{}if post isnt {} )進行比較, if post isnt {}該條件始終為false,可能是因為self.post不是一個空對象。

[更新]

  • 查看頁面時:

     console.log post #logs {} 
  • 提交表格時:

     console.log post #logs { type: 1, email: "email@example.com" } 

您不清楚is / isnt 看那個例子:

coffee> {} is {}
false

令人驚訝嗎? 如果您知道is測試不是兩個變量引用同一對象, is不是這樣。 一樣 確實是同一對象:

coffee> obj1 = {}
{}
coffee> obj2 = obj1
{}
coffee> obj1 is obj2
true

然后,您可以轉到==以測試等效性 但:

coffee> {} == {}
false

不幸的是, JavaScript沒有提供一種簡單的方法來測試對象是否相等

在這種情況下,您應該采取一些技巧。 喜歡:

if (i for i in post).length == 0
  ...

或者,也許檢查某些關鍵字段的存在:

if 'type' not of post
  ...

簡單檢查:

function some_action_in_controller() {
    var self = this;
    // self.body is same as self.post
    var isEmpty = Object.keys(self.body).length === 0);
    self.json({ result: isEmpty }); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM