我可以用async
关键字将javascript函数标记为"async"(即返回一个promise).像这样:
async function foo() {
// do something
}
Run Code Online (Sandbox Code Playgroud)
箭头函数的等效语法是什么?
当我们在没有指定任何排序顺序的情况下运行Mongo find()查询时,数据库内部使用什么来对结果进行排序?
执行不带参数的find()时,数据库以正向自然顺序返回对象.
对于标准表,自然顺序不是特别有用,因为尽管订单通常接近于订单,但不能保证.但是,对于Capped Collections,自然顺序保证为插入顺序.这非常有用.
但是对于标准集合(非上限集合),使用哪个字段对结果进行排序?它是_id字段还是别的什么?
编辑:
基本上,我想我想要的是,如果我执行以下搜索查询:
db.collection.find({"x":y}).skip(10000).limit(1000);
Run Code Online (Sandbox Code Playgroud)
在两个不同的时间点:t1和t2,我会得到不同的结果集:
我已经在临时数据库上运行了一些测试,我得到的结果与所有3个案例相同(是) - 但我想确定并且我确信我的测试用例不是很彻底.
什么是使用的优点/缺点Deps.autorun
或Collection.observe
让第三方插件同步与反应Meteor.Collection
.
例如,我使用jsTree直观地显示我存储在MongoDB中的目录树.我正在使用此代码使其反应:
// automatically reload the fileTree if the data changes
FileTree.find().observeChanges({
added: function() {
$.jstree.reference('#fileTree').refresh();
},
changed: function() {
$.jstree.reference('#fileTree').refresh();
},
removed: function() {
$.jstree.reference('#fileTree').refresh();
}
});
Run Code Online (Sandbox Code Playgroud)
使用此方法的优点/缺点与Deps.autorun
看起来像这样的调用有什么关系:(未经测试)
Deps.autorun(function() {
jsonData = FileTree.find().fetch();
$.jstree.reference('#fileTree')({'core': {'data': jsonData} });
});
Run Code Online (Sandbox Code Playgroud)
这只是一个例子.我一般都在询问优缺点,而不是这个具体的用例.
要注册服务工作者,我可以打电话
navigator.serviceWorker.register('/worker.js')
Run Code Online (Sandbox Code Playgroud)
每次加载页面时都会检查更新版本worker.js
.如果找到更新,则在关闭所有页面的选项卡然后重新打开之前,不会使用新工作程序.我读到的解决方案是:
self.addEventListener('install', function(event) {
event.waitUntil(self.skipWaiting());
});
self.addEventListener('activate', function(event) {
event.waitUntil(self.clients.claim());
});
Run Code Online (Sandbox Code Playgroud)
我可以理解skipWaiting部分,但到底是做clients.claim()
什么的?我已经完成了一些简单的测试,即使没有它也似乎按预期工作.
Flexbox可以轻松地根据可用空间进行智能增长和缩小的布局.我正在使用此功能绘制两个图像,每个图像占据屏幕宽度的一半.在Firefox中,图像按预期呈现并保持其纵横比,但在Chrome中,图像被水平压扁至50%,并垂直留在其全高.
这是我正在谈论的演示:
.flexbox {
width: 100%;
display: flex;
}
img {
width: 50%;
}
Run Code Online (Sandbox Code Playgroud)
<div class="flexbox">
<img src="http://res1.windows.microsoft.com/resbox/en/windows/main/2b03b0c4-85f7-4c28-9c60-1c7af2a62fa8_5.jpg" />
<img src="http://res1.windows.microsoft.com/resbox/en/windows/main/b89eff70-398d-4b1b-8806-02458a185c5a_5.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)
我已经阅读了类似问题的答案,这是一个Chrome错误.我怎样才能干净利落地工作呢?
谢谢
我在前端使用DHTMLX Scheduler,在后端使用DHTMLX Connector作为我的无线电自动化应用程序的一部分.每次用户编辑日历时,都会对一个如下所示的文件进行AJAX调用:
require_once("dhtmlxScheduler_v4/connector/scheduler_connector.php");
require_once('QDRAconf.php');
$res = mysql_connect($QDRAconf['mysqlHost'], $QDRAconf['mysqlUser'], $QDRAconf['mysqlPass']);
mysql_select_db($QDRAconf['mysqlDb']);
// init the schedulerconnector
$conn = new SchedulerConnector($res);
// render the table
$conn->render_table("events","id","start_date,end_date,text");
Run Code Online (Sandbox Code Playgroud)
这个文件是我的"垫片",它将前端连接到后端.我想运行另一个PHP脚本,将更改写入我的crontab,但它需要在DHTMLX库更新数据库之后发生.麻烦的是,DHTMLX库会在它认为完成时自动退出:有时它可能不会越过第一require_once('...')
行,所以我不能只放在require_once('cronwriter.php');
脚本的最后一行.
我的解决方案是创建一个带有析构函数的类,该类使用最新的更改来更新crontab.由于php手册指出如果调用exit()或die()函数仍将运行析构函数,我添加了一个带有运行cronwriter.php
脚本的析构函数的虚拟类:(我将其添加到文件的开头.)
class ExitCatcher
{
function __destruct()
{
require_once('cronwriter.php');
}
}
//init the class
$ExitCatcher = new ExitCatcher;
Run Code Online (Sandbox Code Playgroud)
出于某种原因,它不起作用.
我有一个jsTree,我试图双向"连接"到Meteor集合.现在,jsTree.refresh()
只要集合在以下帮助下更新,我就会自动触发.observeChanges
:
FileTree.find().observeChanges({
added: function() {
$.jstree.reference('#fileTree').refresh();
},
changed: function() {
$.jstree.reference('#fileTree').refresh();
},
removed: function() {
$.jstree.reference('#fileTree').refresh();
}
});
Run Code Online (Sandbox Code Playgroud)
我想通过拖动jsTree中的内容来允许编辑数据库.这是它的样子:
我的问题是,如果我理解正确,那就是数据库更新会触发observeChanges
我之前设置的事件.这将导致树的另一次刷新.这会导致恼人的闪烁,从而中断用户.(即每次拖放操作后,文件浏览器将无法使用约0.75秒.)
如何防止这种不必要的更新,或者是否有更好的方法来构建我的jsTree接口,以防止出现此问题.
我正在尝试将目录树存储在mongoDB中.这是我的架构:
{ "_id" : ObjectId("541ba7f156d876d3f787bc33"), "name" : "file_1.mp3", "length" : 136.6, "kind" : "audio", "parent" : null }
{ "_id" : ObjectId("541ba7f156d876d3f787bc34"), "name" : "file_2.mp3", "length" : 132.0, "kind" : "audio", "parent" : null }
{ "_id" : ObjectId("541ba7f156d876d3f787bc35"), "name" : "file_3.mp3", "length" : 116.8, "kind" : "audio", "parent" : null }
{ "_id" : ObjectId("541ba7f156d876d3f787bc36"), "name" : "file_4.mp3", "length" : 206.7, "kind" : "audio", "parent" : null }
{ "_id" : ObjectId("541ba84456d876d3f787bc37"), "name" : "folder_1", "length" : null, "kind" …
Run Code Online (Sandbox Code Playgroud) 什么是在MongoDB中存储一组文件的好方法,其中订单很重要?我需要轻松地将文档插入任意位置,并可能在以后重新排序.
我可以为每个项目分配一个越来越多的数字并按其排序,或者我可以排序_id
,但我不知道如何在其他文档之间插入另一个文档.说我要插入一个元素之间的事情sequence
的5
和元素用sequence
的6
?
我的第一个猜测是增加sequence
以下所有元素,以便使用类似的查询为新元素留出空间db.items.update({"sequence":{$gte:6}}, {$inc:{"sequence":1}})
.我对数据库管理的有限理解告诉我,像这样的查询会很慢并且通常是一个坏主意,但我很高兴能够得到纠正.
我想我可以将新元素设置sequence
为5.5
,但我认为这会很快变得混乱.(再次,如果我错了,请纠正我.)
我可以使用带有保证订单的上限集合,但如果我需要增加集合,那么我会遇到问题.(再一次,我也可能错了.)
我可以让每个文档包含对下一个文档的引用,但这需要查询列表中的每个项目.(你得到一个项目,将其推送到结果数组,然后根据next
当前项目的字段获取另一个项目.)除了明显的性能问题,我也无法将一个已排序的mongo游标传递给我{#each}
spacebars阻止表达式,并在数据库更改时让它更新.(我正在使用Meteor全栈javascript框架.)
我知道一切都有它的优点和缺点,我可能只需要使用上面列出的一个选项,但我想知道是否有更好的方法来做事.