小编Bon*_*Oak的帖子

异步箭头功能的语法

我可以用async关键字将javascript函数标记为"async"(即返回一个promise).像这样:

async function foo() {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

箭头函数的等效语法是什么?

javascript promise async-await arrow-functions

393
推荐指数
9
解决办法
16万
查看次数

当没有指定排序顺序时,MongoDB如何对记录进行排序?

当我们在没有指定任何排序顺序的情况下运行Mongo find()查询时,数据库内部使用什么来对结果进行排序?

根据mongo网站上文档:

执行不带参数的find()时,数据库以正向自然顺序返回对象.

对于标准表,自然顺序不是特别有用,因为尽管订单通常接近于订单,但不能保证.但是,对于Capped Collections,自然顺序保证为插入顺序.这非常有用.

但是对于标准集合(非上限集合),使用哪个字段对结果进行排序?它是_id字段还是别的什么?

编辑:

基本上,我想我想要的是,如果我执行以下搜索查询:

db.collection.find({"x":y}).skip(10000).limit(1000);
Run Code Online (Sandbox Code Playgroud)

在两个不同的时间点:t1t2,我会得到不同的结果集:

  1. 当t1和t2之间没有额外的写入时?
  2. 当t1和t2之间有新的写入时?
  3. 在t1和t2之间添加了新的索引?

我已经在临时数据库上运行了一些测试,我得到的结果与所有3个案例相同() - 但我想确定并且我确信我的测试用例不是很彻底.

mongodb

89
推荐指数
2
解决办法
3万
查看次数

流星`Deps.autorun`对`Collection.observe`

什么是使用的优点/缺点Deps.autorunCollection.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)

这只是一个例子.我一般都在询问优缺点,而不是这个具体的用例.

json mongodb reactive-programming jstree meteor

23
推荐指数
1
解决办法
6548
查看次数

如何在没有冲突的节点中创建tmp目录

我需要在node.js中按需创建一个临时的"临时"目录.要求是:

  • dirname应该是随机的(即 /tmp/aDIge4G/
  • 将创建一个目录,/tmp其中可能已经有其他随机命名的目录.
  • 如果目录已经存在,我应该抛弃而不是使用它并覆盖别人的工作
  • 这需要在并发环境中安全.我不能只检查目录是否存在,然后创建它,如果不存在,因为其他人可能我检查创建了一个具有相同名称的目录.

换句话说,我需要这个问题的答案,但对于目录,而不是文件.

这个答案说我想做的事情可以通过mkdir -p,但Node没有-p标志fs.mkdir

javascript directory concurrency file node.js

14
推荐指数
3
解决办法
8562
查看次数

`self.Clients.claim()`有什么用?

要注册服务工作者,我可以打电话

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()什么的?我已经完成了一些简单的测试,即使没有它也似乎按预期工作.

javascript frontend offline offline-caching service-worker

14
推荐指数
3
解决办法
4885
查看次数

chrome不符合flexbox中的图像宽高比

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错误.我怎样才能干净利落地工作呢?

谢谢

html css google-chrome flexbox responsive-design

12
推荐指数
2
解决办法
4617
查看次数

退出前触发功能

我在前端使用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)

出于某种原因,它不起作用.

php debian dhtmlx-scheduler

10
推荐指数
1
解决办法
494
查看次数

当第三方窗口小部件更改其自己的活动数据源时,Meteor避免双重刷新

我有一个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中的内容来允许编辑数据库.这是它的样子:

  1. 用户将元素拖动到新位置.
  2. jsTree更新树中元素的位置.
  3. jsTree调用事件处理程序
  4. 事件处理程序更新数据

我的问题是,如果我理解正确,那就是数据库更新会触发observeChanges我之前设置的事件.这将导致树的另一次刷新.这会导致恼人的闪烁,从而中断用户.(即每次拖放操作后,文件浏览器将无法使用约0.75秒.)

如何防止这种不必要的更新,或者是否有更好的方法来构建我的jsTree接口,以防止出现此问题.

javascript javascript-events jstree meteor

7
推荐指数
1
解决办法
369
查看次数

根据元素数组中的父属性构建javascript树

我正在尝试将目录树存储在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)

javascript recursion mongodb underscore.js meteor

6
推荐指数
1
解决办法
169
查看次数

如何在不使用上限集合的情况下在MongoDB中存储一组有序的文档

什么是在MongoDB中存储一组文件的好方法,其中订单很重要?我需要轻松地将文档插入任意位置,并可能在以后重新排序.

我可以为每个项目分配一个越来越多的数字并按其排序,或者我可以排序_id,但我不知道如何在其他文档之间插入另一个文档.说我要插入一个元素之间的事情sequence5和元素用sequence6

我的第一个猜测是增加sequence以下所有元素,以便使用类似的查询为新元素留出空间db.items.update({"sequence":{$gte:6}}, {$inc:{"sequence":1}}).我对数据库管理的有限理解告诉我,像这样的查询会很慢并且通常是一个坏主意,但我很高兴能够得到纠正.

我想我可以将新元素设置sequence5.5,但我认为这会很快变得混乱.(再次,如果我错了,请纠正我.)

我可以使用带有保证订单的上限集合,但如果我需要增加集合,那么我会遇到问题.(再一次,我也可能错了.)

我可以让每个文档包含对下一个文档的引用,但这需要查询列表中的每个项目.(你得到一个项目,将其推送到结果数组,然后根据next当前项目的字段获取另一个项目.)除了明显的性能问题,我也无法将一个已排序的mongo游标传递给我{#each}spacebars阻止表达式,并在数据库更改时让它更新.(我正在使用Meteor全栈javascript框架.)

我知道一切都有它的优点和缺点,我可能只需要使用上面列出的一个选项,但我想知道是否有更好的方法来做事.

sorting mongodb

6
推荐指数
2
解决办法
6196
查看次数