我正在使用MEAN堆栈,我正在向我的Nodejs服务器端点动态发送查询参数。 我的客户控制器:
$http.get('/api/things',{params:{query:query}}).then(response => {
this.awesomeThings = response.data;
socket.syncUpdates('thing', this.awesomeThings);
});
其中query是注入控制器的值。 这是服务器控制器功能(可以工作):
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(查询)中找出它时最终输出,程序停止工作,没有错误消息,非常奇怪.. 如果有人可以解释上面的语法以及为什么必须以这种方式完成它的工作,那将非常感激.. 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)
}
答案 0 :(得分:1)
def max_word_length(row, *cols):
return row[list(cols)].map(len).max()
# Make sure `axis=1` so rows are passed in and we can access columns
df.apply(max_word_length, axis=1, args=('col1', 'col2', 'col3'))
function one() {
var x = {};
var res = JSON.parse(x.y);
console.log(res);
}
function two() {
var x = {};
var res = x.y && JSON.parse(x.y);
console.log(res);
}
<button onclick="one()">ERROR</button>
<button onclick="two()">NO ERROR</button>
由于从左侧评估表达式,因此首先评估数据。
如果未定义,则下一部分 - &gt; var x = data && JSON.parse(data);
未执行。
另一方面,如果定义了数据,则尝试解析并返回结果并将其存储在x。
这里的主要优点是如果未定义变量,则解析不会运行。
它可以等同于:
JSON.parse()