关于在http://www.mongodb.org/display/DOCS/Advanced+Queries#AdvancedQueries-%24in中使用$的MongoDB/mongoose查询的问题
如果我进行一个查询,其中目标字段和$ in字段都有多个值,有没有办法知道哪个target/$ in字段元素在返回的参数中匹配?
例如,如果我有一堆像这样的文件
doc1 = { name : Abe, children : [Betty, Claire, Donald, Eamon] }
Run Code Online (Sandbox Code Playgroud)
我设置了一个查询
Model.find( { children : { $in : [Ann, Betty, Clive] } })
Run Code Online (Sandbox Code Playgroud)
如果我得到上面的结果doc1,有什么方法我可以知道(没有手动迭代数组)哪个目标元素和哪个$ in元素匹配?所以在上面的例子中,我如何才能访问doc1被选中的事实,因为它匹配'Betty'?提前致谢!
我希望你一切都好.
我突然无法在jade模板中呈现任何外部javascript!为了解决问题的根源,我将其剥离到最低限度:
节点0.6.11,Express 2.5.8,jade 0.20.3
app.js
var express = require('express')
, routes = require('./routes');
var app = module.exports = express.createServer();
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
app.get('/', function(req, res){
res.render('index', { title: 'Express' });
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
layout.jade
!!!
html
head
title= title
link(rel='stylesheet', href='/stylesheets/style.css')
script(type='text/javascript', src='/javascripts/script.js')
body!= body
Run Code Online (Sandbox Code Playgroud)
的script.js
alert('hello!');
Run Code Online (Sandbox Code Playgroud)
在我看来,当我运行服务器并加载http:// localhost:3000 /时,我应该直接得到'你好!' 消息,但它只是直接运行到正常页面.更重要的是,如果我手动输入
script
alert('hello!') …Run Code Online (Sandbox Code Playgroud) 我在ebs上创建了我的node.js应用程序,其中有两个子路由器'foo'和'bar',目前可以通过'example.com/foo'和'example.com/bar'访问.
我希望ebs的反向代理将子域"foo.example.com"和"bar.example.com"转发到这些子文件夹......
即"foo.example.com/xxx"到"example.com/foo/xxx""bar.example.com/yyy"到"example.com/bar/yyy"等.
我知道如何配置nginx来做到这一点,但我无法想出去访问EBS上的nginx配置文件...
在我的应用程序中,我让mongo通过其ObjectId方法生成订单ID.
但是在用户测试中,我们有一些担心订单ID是人为的"恐吓",即如果你需要通过电话与某人讨论你的订单,读出24个字母数字字符有点单调乏味.
与此同时,我真的不想存储两个不同的id,一个是"人类可访问的",另一个是内部使用的mongo.
所以我的问题是 - 有没有办法选择长度为6或甚至8的mongo objectId字符串的子字符串,我可以相当确定它是唯一的?
例如,如果我有像这样的mongo objectid
id = '4b28dcb61083ed3c809e0416'
Run Code Online (Sandbox Code Playgroud)
也许我可以拿出来
human_id = id.substr(0,7);
Run Code Online (Sandbox Code Playgroud)
并确保我总是为我的订单获得唯一的ID ...
当然,优点是这些是订单,人类创造的也是如此,因此每毫秒不会有数百万.另一方面,如果两个订单具有相同的缩短ID,那真的会成为一个问题......
---更清楚的解释---
我想问一个更好的问题是:
例如,如果我决定只使用mongo id的最后6个字符,是否有某种"概率"度量,这些6个字符在给定的一周内会重复?
给定一定数量的mongo并行运行,一周内有一定数量的用户等.
关于如何使用Jquery.deferred来生成慢同步函数的快速问题会返回一个promise.到目前为止我所做的是:
function sayIt(ms) {
setTimeout( function() { console.log('what I say'); }, ms);
}
function doIt() {
return $.Deferred( function() { sayIt(2000); }).promise();
}
doIt().then( function() { console.log('ah'); });
Run Code Online (Sandbox Code Playgroud)
sayIt(2000)总是通过,但'then'之后的链式函数永远不会触发.
如果我这样做:
doIt().then( console.log('ah'));
Run Code Online (Sandbox Code Playgroud)
'啊'马上出现,然后我说'我说'2000ms之后 - 我想要的当然是相反的 - 两秒后我得到'我说的',然后'啊'.
任何建议赞赏!
E9说,我处于一种我希望从一个单元格开始的情况,我想选择下到列的末尾除了我不想在列中包含最后两个单元格.
所以举个例子
A
B
C
D
E
Run Code Online (Sandbox Code Playgroud)
我想在列中选择范围A:C,但不是D和E.
试过
ActiveSheet.Range("E9", ActiveSheet.Range("E9").End(xlUp)).Select
Run Code Online (Sandbox Code Playgroud)
但不知道如何砍掉最后两个细胞......
我在客户端使用 Backbone.js,在服务器上使用 express.js,我正在尝试通过 Backbone 保存/放置模型更新。我没有对 Backbone.sync 做任何事情,所以它应该只是简单的旧 $.ajax。
在服务器上,我有一个简单的
app.put('my-url', function(req, res){
req.body.keys.forEach( function(key){
// do stuff with key
});
});
Run Code Online (Sandbox Code Playgroud)
每次,我都会收到一条错误消息,说'无法调用未定义的方法'forEach',果然快速的console.log 显示req.body.keys 是未定义的。另一个快速的 console.logs 显示 Object.keys 和 'forEach' 都很好,那个 typeof req.body 是对象。
有人看到出了什么问题吗?我尝试了 JSON.parse(req.body) 并得到了著名的 'unexpected token o' 错误......