Tag: recursion

recursion函数的callback

以下代码用于从我们的Web应用程序获取.zip文件。 该文件是通过安全地closures另一个应用程序然后进行压缩生成的,最后发送下载。 var dl = function() { request({ method: 'GET', uri: 'some_url', headers: { 'User-Agent': 'Scripted-Download' }, encoding: null, jar: true }, function(err, res, body) { if (err) throw(err) if (res.headers['content-type'] === 'application/zip;charset=utf-8') { process.stdout.write('\rDownloading file ..') var id = uuid.v4() , file = path.resolve(__dirname, '../../' + id + '.zip') fs.writeFile(file, body, function(err) { if […]

如何用MongoDBrecursion查询树结构?

例如一个树形结构如; [ {id: 1 , childrenIdList: [2, 3]}, {id: 2 , childrenIdList: [4, 5]}, {id: 3 , childrenIdList: []}, {id: 4 , childrenIdList: [6, 7]}, {id: 5 , childrenIdList: []}, {id: 6 , childrenIdList: []}, {id: 7 , childrenIdList: []} ] 这就像 1 2 3 4 5 6 7 我如何追踪树从开始叶节点(id = 7)到根(id = 1)? findid=7的父母很容易; […]

如何用MongoDB构buildrecursion结构

我试图做一些通常简单的SQL(例如,在同一个表中的外键)(这可能是与MongoDB一样简单,我只是不知道),这是build立一个recursion数据结构。 在这个例子中,我将讨论网站中的页面。 我想做一个多层次的页面结构。 所以可能有: 家 我们的产品 产品1 产品2 关于我们 我们在哪? 联系我们 比方说,网页将有一个标题和一个内容。 我需要知道什么是最好的方法来做到这一点,也是我可以build立一个基于该数据结构(显示每个级别的每个页面的页面)的网站地图。 我正在为MongoDB构build一个node.js应用程序。 编辑:它不会通过简单地引用每页中的父页面工作? 页面会像{ title: 'test', content: 'hello world', parentPage: ObjectID(parent page) } 谢谢您的帮助!

在JavaScript中asynchronous迭代大量数组,而不会触发超出的堆栈大小

我的环境是NodeJS,尽pipe这也可能是Web相关的问题。 我有一个数据库的大量数据,我试图枚举。 然而,为了争论让我说,我有一个20000string的数组: var y = 'strstrstrstrstrstrstrstrstrstr'; var x = []; for(var i = 0; i < 20000; i++) x.push(y); 我想枚举这个列表asynchronous,可以说使用asynchronous库 ,并可以说,因为我超级谨慎,我甚至一次限制我的枚举5次迭代: var allDone = function() { console.log('done!') }; require('async').eachLimit(x, 5, function(item, cb){ … someAsyncCall(.., cb); }, allDone); 期望的是5个x的项目将在上面同时迭代,并且最终所有20,000个项目将被迭代,并且控制台将打印“完成!”。 实际发生的是: Uncaught exception: [RangeError: Maximum call stack size exceeded] 在这一点上,我认为这一定是asynchronous库的一种错误,所以我写了自己的eachLimit版本,如下所示: function eachLimit(data, limit, iterator, cb) { […]

使用PhantomJS将多个页面渲染为pdf文件

我需要使用PhantomJS将多个页面渲染成pdf文件。 一旦PhantomJS渲染一个页面,另一个实例不能被调用,直到完成前一个执行。 我相信它将需要一些types的callback和recursion方法。 以下是呈现单个页面的代码: someUrl = "https://www.google.com/"; var phantom = require('phantom'); phantom.create(function(ph){ ph.createPage(function(page) { page.open(someUrl, function(){ page.render('google.pdf'); //needs to wait for this to finish ph.exit(); //to call itself for the next url }); }); });

如何遍历JSON对象定位特定属性并将其内容推送到数组?

我正在使用一个JSON对象,它可以在任何叶子上有一个属性ids 。 我想遍历这个对象,find所有ids属性的实例,并将每个id存储在一个集合中。 嘲笑JSON对象( ids属性可能在更深的属性位置)。 { "id": "b38a683d-3fb6-408f-9ef6-f4b853ed1193", "foo": { "ids": [ { "id": "bd0bf3bd-d6b9-4706-bfcb-9c867e47b881" }, { "id": "d1cc529d-d5d2-4460-b2bb-acf24a7c5999" }, { "id": "b68d0c8c-548e-472f-9b01-f25d4b199a71" } ], "baz": "super" }, "bar": { "ids": [ { "id": "bd0bf3bd-d6b9-4706-bfcb-9c867e47b881" }, { "id": "d1cc529d-d5d2-4460-b2bb-acf24a7c5999" }, { "id": "b68d0c8c-548e-472f-9b01-f25d4b199a71" } ] } } 我正在使用下面的代码来遍历上面的JSON。 var jsonFile = require('./file_test.json'); // the above […]

基于recursion目录的callback – Node.js

我有一个recursion函数,它执行一个树进程,其中每个调用可以多次调用自己,我没有任何方法知道它有多深或多宽。 整个过程完成后,如何运行callback? 我正在考虑让某种对象通过计算,但还没有完全破解它,我想知道是否有一个已知的最好/更好的方法来做到这一点。

使用node.js从redis获取hierchical数据

我希望有人可以用这个来救我。 出于某种原因,我无法绕过node.js中的recursion。 如果还有其他方法,它甚至不需要recursion。 我正在使用redis集来存储层次结构: SADD parents.<name> <parent1> <parent2> 那么,parent1和parent2也将有条目,并在上面。 我想将其转换为JSON数组对象。 JSON将如下所示: [ { label: <name>, parents: [ { label: <parent1>, parents: [ {label: <grandparent1>}] }, { label: <parent2> } ] } ] 等等等等。 这应该能够工作在任何深度,但平均而言,它只能达到4-6节点深度。 下面是我一直在玩的一些代码,只是让我第一级: var redis = require('node-redis'); var r_client = redis.createClient(); function get_parents (name, current, cb) { var output = new Array; output.push( […]

用recursion函数使用promise

我试图找出是否有可能在recursion函数中使用promise而不是标准callback。 我现在的方式是: function recursive(data, cb){ (function promiseProvider(data){ return newThenable(data).then(function(val){ if(val.a){ cb(null, val); } else { return promiseProvider(val); } }); })(data); } 这工作,但我不知道我怎么可以做一个纯粹的承诺实现。 也许这会工作? function recursive(data){ return newThenable(data).then(function(val){ if(val.a){ return // <<< ??? } else { return recursive(val); } }); } 大声笑没有这不工作…

在Node.js中,如何以编程方式从一个redis数据库中检索许多散列值,并使用一组作为索引

所以我在我的redis数据库中为每个用户都有一大堆字段,我希望能够检索所有logging并显示它们。 我这样做的方式是存储一组所有userids,当我想要所有的logging,我recursion地迭代设置抓住他们的logging使用集中的userids,并将它们添加到一个全局数组,然后最后返回这个全局数组。 无论如何,我不是特别喜欢这种方法,并希望听到一些替代scheme的build议,我觉得必须有更好的function在node.js或redis这个问题。 也许有一种方法可以完全避免使用这个设置,但是四处看看我什么都看不到。 这是我的psuedoish(相当完整的)node.js代码的一个例子,注意set的大小不是问题,因为它很less会大于15。 寄存器function: var register = function(username, passwordhash, email){ // Get new ID by incrementing idcounter redis.incr('db:users:idcounter', function(err, userid){ // Setup user hash with user information, using new userid as key redis.hmset('db:user:'+userid, { 'username':username, 'passwordhash':passwordhash, 'email':email },function(err, reply){ // Add userid to complete list of all users redis.sadd('db:users:all', userid); } }); }); […]