【发布时间】:2016-11-12 22:05:39
【问题描述】:
我正在使用 MEAN 堆栈,并且正在向我的 Nodejs 服务器端点动态发送查询参数。 我的客户端控制器:
$http.get('/api/things',{params:{query:query}}).then(response => {
this.awesomeThings = response.data;
socket.syncUpdates('thing', this.awesomeThings);
});
其中查询是注入控制器的值。 这是服务器控制器功能(有效):
export function index(req, res) {
var query = req.query.query && JSON.parse(req.query.query)
Thing.find(query).sort({_id:-1}).limit(20).execAsync()
.then(respondWithResult(res))
.catch(handleError(res));
}
上述方法有效,但我试图理解这一行
var query = req.query.query && JSON.parse(req.query.query)
因为我以前从未见过这个(而且我不是来自编程背景)。我 console.logged 查询并理解它是一个对象(Mongodb 需要)但是当我 console.logged (JSON.parse(req.query.query)) 或 JSON.parse(query) 找出最终输出时,程序停止工作,没有错误消息,很奇怪.. 如果有人可以解释上述语法以及为什么必须以这种方式完成它才能工作,那将不胜感激.. PS当我尝试像这样控制台记录JSON.parse时,即使它应该没有任何效果,它也无法加载:
export function index(req, res) {
var query = req.query.query && JSON.parse(req.query.query)
var que = JSON.parse(req.query.query)
Thing.find(query).sort({_id:-1}).limit(20).execAsync()
.then(respondWithResult(res))
.catch(handleError(res));
console.log("que"+que)
}
【问题讨论】:
-
这是唯一有效的代码。如果我不这样编码,它就行不通。上面的代码取自实际的工作代码,我只是想问一下这个语法是什么意思以及它为什么起作用。