Tag: underscore.js

Node.js:我如何克隆一个带有Underscore的对象,然后将新的属性分配给克隆?

我正在使用node和express来处理REST API。 我正在使用mongoose.js,我正在创build一个新的用户文件在我的分贝。 没有汗水,效果很好。 当我想添加一个属性到.save()返回的json对象时,问题就出现了。 我想在保存之后添加这个属性,因为这是一个使用REST接口的客户端的标志,但是这不是我想要保存到数据库的东西。 这是我的例子: var _ = require('underscore'); var user = new User({"username" : "Joe"}); user.save(function(err, newuser){ if (err) return next(err); var nu = _.clone(newuser); nu.newbie = 'true'; res.send(JSON.stringify(nu)); }); 下面是一个示例响应(这是在nu ): { "username": "Joe", "_id": "4f343383a5503c452a000002", } 正如你所看到的,我试图添加nu.newbie属性,并将其设置为true并且不起作用。 我相信这是某种范围或参考问题。 有任何想法吗?

Node.js和underscore.js – 模板

好的,所以我的问题是非常基本的。 我正在使用Node.js和Underscore作为注册的模板引擎,使用Expressjs框架。 我正在尝试创build部分。 我希望能够做到像你用其他语言做的事情: <% include('header') %> <body id="content"> <span>Blah</span> </body> <% include('footer') %> 你明白了。 那么,有没有人知道一种方法,使这可能使用下划线节点? 编辑: <% var isReturned = false; var isSuccess = false; if(typeof user != 'undefined'){ var isReturned = true; } if(typeof errors == 'undefined'){ var errors = null; } if(typeof success != 'undefined'){ isSuccess = true; } %> <% _.template('header') […]

Underscore.js – 没有和差异的方法麻烦

我试图在underscore.js库中使用_.without和_.difference方法,但没有运气。 这是一些代码。 var someIds = _.pluck(parsedID1, 'id'); var otherIds = _.pluck(parsedID2, 'id); 这是麻烦开始的地方,我想从someId的列表中删除所有otherIds。 所以我有两个select根据网站,或者我可以使用_.difference || _.without。 我用它们就像这样… var newArray = _.without(_.toArray(someIds), _.toArray(otherIds)); 我也试图用_.difference来做到这一点,但我似乎无法做任何事情,除了第一个参数的副本返回到函数。 我也尝试将parameter passing给函数而不使用_.toArray(),但同样的事情发生。有没有人曾经遇到过这个错误? 编辑: 我已经尝试了下面提出的方式。 我会再提供一些代码,希望能够解决这个问题。 我作为参数传入的数组采用以下格式。 var array = ['100004191488120', '100004191488321']; 当我进入_.difference时,我的操作如下: var newArray = _.difference(someIds, otherIds); 如果someIds长度是657和其他的ID是57我应该得到600 Id的结果。 相反,我得到了第一个参数的长度是657的结果。 编辑2:解决 我想清楚问题是什么,毕竟这个问题和第二个争议的问题混淆在一起。 我正在做一个数据库查询,并得到一个如下所示的列表。 [{ _id: 514721152222111116666777, facebook: { id: '123456789' } }, […]

npm不安装下划线包

我想用npm安装软件包:我的软件包文件是: "dependencies": { "express": "~3.3.6", "socket.io": "0.9.16", "jade": "~0.35.0", "less-middleware": "~0.1.12", "redis": "~0.8.4", "connect-redis": "~1.4.5", "longjohn": "~0.2.1", "mongoose": "~3.6.20", "json-stringify-safe": "~5.0.0" }, "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-uglify": "~0.2.2", "grunt-nodemon": "~0.1.0", "grunt-contrib-jshint": "~0.6.3", "grunt-contrib-less": "~0.7.0", "grunt-ngmin": "0.0.3" } } 但我有这个错误: npm http 304 https://registry.npmjs.org/underscore.string npm ERR! Error: No compatible version found: underscore.string@'~2.2.0rc' npm ERR! Valid install […]

如何使用after和each连接在下划线js中创build一个同步循环

嗨我想创build一个使用下划线js的同步循环。 对于每个循环迭代,我进行一些进一步的asynchronous调用。 但是,我需要等到每个迭代调用完成之后才能继续下一个迭代。 这是可能的下划线JS? 如果是的话,怎么样? 有人可以提供一个例子吗? _.( items ).each( function(item) { // make aync call and wait till done processItem(item, function callBack(data, err){ // success. ready to move to the next item. }); // need to wait till processItem is done. }); 更新我解决了这个使用async.eachSeries方法。 async.eachSeries( items, function( item, callback){ processItem(item, function callBack(data, err){ // Do the […]

lodash或者强调每个方法在Node.js中并行运行?

我知道在节点中,除了你的代码之外,所有东西都是平行的。 阅读这里和这里 。 我正在寻找一个可能的场景,我在内存中有一个非常大的数组,我想对它的每个元素执行一个小的计算。 这个计算执行的顺序并不重要。 在节点中,由于事件循环,所有的I / O执行都非常有效,但是当你迭代一个集合时,不会有I / O参与,如果迭代时间太长,你可以在那段时间内阻塞所有的传入请求。 这个要点包含了Neilk在他的文章中写到的nonBlockingForEach 为什么你应该使用Node.js来执行CPU绑定的任务 ,这让我想知道是否我写了这样的东西 var my_very_large_array = […]; my_very_large_array.forEach(function() { … }) //or _.each(my_very_large_array, function() { … }) 我将在我的服务器上遇到性能瓶颈(如果存在的话,这个库可以回退到原生的forEach) 从我学到的东西中,有很多像async.js这样的库,但是我总是在浏览器中使用lodash或者下划线来完成这些任务。 我也试过bluebird.js,但promisifying这些方法没有按预期工作。 所以我的问题是这个。 在使用forEach方法迭代大型集合时,lodash或者在node.js环境中强调性能杀手?

我怎样才能节制堆栈的API请求?

我有一个id数组,我想为每个id做一个api请求,但是我想控制每秒有多less个请求,或者更好的是,在任何时候只有5个打开的连接,并且当一个连接是完成,取下一个。 目前我有这个,它只是在同一时间发射所有的请求: _.each([1,2,3,4,5,6,7,8,9,10], function(issueId) { github.fetchIssue(repo.namespace, repo.id, issueId, filters) .then(function(response) { console.log('Writing: ' + issueId); writeIssueToDisk(fetchIssueCallback(response)); }); });

Lodash isUndefined提供意想不到的结果

我有一个三元节点使用Lodash isUndefined: sendUser.company = _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name; sendUser.company = _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name; 但是当我尝试运行它时,我得到TypeError: Cannot read property 'name' of undefined 。 不知道我在这里错过了什么。

下划线jsreplace对象中的项目

使用Underscorejs,谁会知道如何简单地replace一个对象的属性? 例如,如果我有这个: var obj = { "id" : 123, "date" : 142002020, "name" : "somename", "active" : 1 } 现在我想要将活动设置为0; 我可以使用_.collect并检查“active”,然后更新它并返回一个新的variables,但似乎有更好的方法,我只是没有看到它。 谢谢!

如何使用javascript或lodash获取Uniq对象

我有这样的对象的数组 var result={ "employees": [ { "_id": "5796e7a27d075bd0453b7751", "firstName": "Test4", "schemaName": "Employee" }, { "_id": "5796e78e7d075bd0453b774f", "firstName": "Test 3", "schemaName": "Employee" }, { "_id": "5790b203df5ad69025e8a20b", "email": "df@gmail.com", "schemaName": "Employee" }, { "_id": "577f69cc789df5ec1e995513", "firstName": "Jeevan", "email": "ddd@asd.com", "schemaName": "Employee" }, { "_id": "577f69cc789df5ec1e995513", "firstName": "Chethan", "email": "ddd@asd.com", "schemaName": "Employee" } ] }; }; 但我想通过电子邮件uniq对象。 我使用lodash […]