![](/img/trans.png)
[英]How to pass data to Mongodb using Node.js, websocket and 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.