Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果JavaScript没有';如果没有未知属性的getter,那么以下内容在mongo db控制台中是如何工作的?_Javascript - Fatal编程技术网

如果JavaScript没有';如果没有未知属性的getter,那么以下内容在mongo db控制台中是如何工作的?

如果JavaScript没有';如果没有未知属性的getter,那么以下内容在mongo db控制台中是如何工作的?,javascript,Javascript,当我浏览stackoverflow时,我发现没有像php这样的通用getter。但是,在MongoDB控制台中,当甚至没有定义mycollection时,db.mycollection.find()。那么,它是如何被访问的呢 PS:“works”表示它不会给出任何错误,并返回0个结果,就好像db已经具有名为“mycollection”的属性一样。注意。我的问题与mongodb概念无关。不知道mongodb做什么。然而,你的前提是错误的 如果使用对象,JavaScript(ES6)具有未知属性的g

当我浏览stackoverflow时,我发现没有像php这样的通用getter。但是,在MongoDB控制台中,当甚至没有定义mycollection时,
db.mycollection.find()
。那么,它是如何被访问的呢


PS:“works”表示它不会给出任何错误,并返回0个结果,就好像db已经具有名为“mycollection”的属性一样。注意。我的问题与mongodb概念无关。

不知道mongodb做什么。然而,你的前提是错误的

如果使用对象,JavaScript(ES6)具有未知属性的getter

例如:

var db = new Proxy(()=>0, {
  get(target, property, receiver) { // Trap for getting property values
    return target[property] || receiver;
  }
});
'mycollection' in db; // false -- there is no such property
db.mycollection.find(); // 0 -- but accessing it returns a value
Mongo Shell有一个。这不能被认为是一个实现了ECMA标准的纯Javascript控制台


shell中的查询由该API处理,而不是由Javascript处理。所以,这种行为很不规范

你说它有效是什么意思?你是否声称在没有定义集合并将某些内容放入数据库的情况下就可以取回文档?什么意思?我想你说的“有效”是指,它不会出错,并返回0个结果。“为什么会这样”的答案可能是因为mongo“优雅地”处理了错误@Jacques。对我们也在代码中这样做吗?从技术上讲,它与getter无关,但是如果您愿意,可以使用try/catch/finally块。除非您告诉代码在catch块中输出错误,否则它将自动失败。对性能来说很糟糕tho:ES2015(6)很棒,但基于运营问题,我怀疑他到目前为止是否深入研究过。虽然,他应该这样做。这将是非常好的一年左右,当代理实际支持的地方(除了最新的Firefox)Firefox 18是三年前,但它肯定说(即使我认为这是错误的)?无论如何,Firefox和最新的Edge是唯一支持代理atm的,Node不支持代理atm,而且看起来不像Babel或Traceur。我已经启用了隐藏的javascript功能(chrome://flags/#enable-但即使在chrome中,它说“代理未定义”,我的版本是47。