小编ezm*_*use的帖子

mongodb/mongoose findMany - 查找在数组中列出ID的所有文档

我有一个_ids数组,我想相应地获取所有文档,最好的方法是什么?

就像是 ...

// doesn't work ... of course ...

model.find({
    '_id' : [
        '4ed3ede8844f0f351100000c',
        '4ed3f117a844e0471100000d', 
        '4ed3f18132f50c491100000e'
    ]
}, function(err, docs){
    console.log(docs);
});
Run Code Online (Sandbox Code Playgroud)

该数组可能包含数百个_id.

mongoose mongodb node.js

218
推荐指数
7
解决办法
14万
查看次数

mongoDB/mongoose:如果不为null,则为唯一

我想知道是否有办法强制一个唯一的集合条目,但只有当条目不为空时.e示例模式:

var UsersSchema = new Schema({
    name  : {type: String, trim: true, index: true, required: true},
    email : {type: String, trim: true, index: true, unique: true}
});
Run Code Online (Sandbox Code Playgroud)

在这种情况下,'email'不是必需的,但如果保存'email',我想确保此条目是唯一的(在数据库级别).

空条目似乎得到值'null'所以每个条目都没有电子邮件与'unique'选项崩溃(如果有不同的用户没有电子邮件).

现在我正在应用程序级别上解决它,但是希望保存该数据库查询.

谢谢

mongoose mongodb node.js

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

nodejs:Ajax vs Socket.IO,优点和缺点

我想要摆脱所有客户端Ajax调用(jQuery),而是使用永久套接字连接(Socket.IO).

因此,我将使用事件侦听器/发射器客户端和服务器端.

防爆.用户在浏览器中触发click事件,客户端发射器通过套接字连接将事件推送到服务器.服务器端侦听器对传入事件做出反应,并将"完成"事件推送回客户端.客户端的侦听器通过DIV元素中的淡入淡出对传入事件做出反应.

这有道理吗?优点缺点?

ajax jquery node.js socket.io

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

如何避免回调链?

我需要严格按顺序调用一堆函数.下一个函数等到前一个函数完成之前,这一点也非常重要.

现在我正在使用链式回调:

callMe1(function(){
    callMe2(function(){
        callMe3(function(){

            callMeFinal();

        });
    });
});
Run Code Online (Sandbox Code Playgroud)

这有效,但似乎有点难看.

对于不同方法的任何建议?

javascript jquery callback

21
推荐指数
2
解决办法
1万
查看次数

如何在Node.js/Express中将expires头添加到favicon.ico

在Express中,我将expires头添加到我的静态文件中

app.use(function (req, res, next) {

    // static folder: css
    if (req.url.indexOf('/css/') === 0) {
        res.setHeader('Cache-Control', 'public, max-age=345600'); // 4 days
        res.setHeader('Expires', new Date(Date.now() + 345600000).toUTCString());
    }

});

app.use(express.static(root + '/app'));
Run Code Online (Sandbox Code Playgroud)

我不能做的就是抓住这样的favicon.ico请求.

有没有办法在Node/Express中将过期标题添加到favicon?
是什么让favicon.ico请求与其他静态文件相比如此不同?

谢谢!

favicon node.js express expires-header

14
推荐指数
2
解决办法
6857
查看次数

添加回调函数 - 总是

我发现自己使用一种奇怪的方式将回调函数添加到我的函数中,我想知道是否有一种更通用的方法来向函数添加回调,最好的情况是我会遇到一种情况,我的所有函数都会检查最后一个给定的param for be一个函数,如果是这样,则将其用作回调函数.

这就是我过去的做法:

var myFunc = function( obj ) {

  if ( arguments.length > 0 ) {
    if ( _.util.typeofObj( arguments[arguments.length-1] ) === Function ) {
      var callback = arguments[arguments.length-1];
    }
  }

  // some code ...

  if ( callback !== undefined ) {
    callback();
  }

};

var foo = myFunc( myObj, function(){
  alert( 'Callback!' );
});
Run Code Online (Sandbox Code Playgroud)

有什么建议?

javascript

7
推荐指数
3
解决办法
8273
查看次数

Modernizr检查排除了识别iOS设备的IE6,IE7,IE8或IE

我可以使用Modernizr运行任何检查(或检查的组合),其中:

  • IE6失败,但更高版本不会失败?
  • IE7失败,但更高版本不会失败?
  • IE8失败,但更高版本不会失败?

  • 所有的IE都失败了?

  • 所有浏览器都失败了,但iOS设备不会失败?

  • 所有浏览器都失败了,但Android设备不会失败?

我想使用Modernizr检查浏览器,基于功能检测的设备而不是用户代理嗅探?

CLOSED - thx,得到了消息

thx,ez

javascript jquery browser-detection feature-detection modernizr

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

如何最有效地更新MongoDB中的大量文档?

我想最有效地更新大量(> 100,000)文档.

我的第一个天真的方法是在JS级别上进行,编写首先获取_ids的脚本,然后遍历_ids并通过_id(完整文档或$ set patch)调用更新.

我遇到了内存问题,还将数据分成最大块.500个文档(打开和关闭连接)似乎不能很好地工作.

那么我怎样才能在MongoDB级别上解决这个问题呢?
最佳实践?

我有3个常见用例,通常是维护工作流程:

1.更改属性值的类型,而不更改值.

// before
{
  timestamp : '1446987395'
}

// after
{
  timestamp : 1446987395
}
Run Code Online (Sandbox Code Playgroud)

2.根据现有属性的值添加新属性.

// before
{
  firstname : 'John',
  lastname  : 'Doe'
}

// after
{
  firstname : 'John',
  lastname  : 'Doe',
  name      : 'John Doe'
}
Run Code Online (Sandbox Code Playgroud)

3.只需从文档中添加删除属性.

// before
{
  street    : 'Whatever Ave',
  street_no : '1025'
}

// after
{
  street    : 'Whatever Ave',
  no        : '1025'
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

javascript mongodb node.js

2
推荐指数
1
解决办法
4137
查看次数