Articles of recursion

Node js中的复杂recursion

我需要帮助试图通过这个JSON对象recursion来build立一个查询。 我正在JavaScript中这样做。 的NodeJS 我有一个像这样的对象 { type: "and", left: { type: "eq", left: { type: "property", name: "City" }, right: { type: "literal", value: "Seattle" } }, right: { type: "and", left: { type: "eq", left: { type: "property", name: "State" }, right: { type: "literal", value: "Washington" } }, right: { type: "and", left: { […]

Node.js项目依赖关系的过度recursion

因此,经过漫长的一天工作之后,我坐下来看到系统托盘中的Windows SkyDrive警报: Files can't be uploaded because the path of this file or folder is too long. Move the item to a different location or shorten its name. C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\grunt-contrib-nodeunit\node_modules\nodeunit\node_modules\tap\node_modules\runforcover\node_modules\bunker\node_modules\burrito\node_modules\traverse\example\stringify.js …有一段时间,我嘲笑这种技术限制。 但是,我想知道:Node项目中的目录recursion是否真的有必要? 看起来超出"angular-app\server\node_modules"的path只是整个项目的依赖关系,可能会更好地expression为: C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\grunt-contrib-nodeunit\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\nodeunit\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\tap\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\runforcover\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\bunker\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\burrito\ C:\Users\Matthew\SkyDrive\Documents\Projects\Programming\angular-app\server\node_modules\traverse\ 我之前并没有真正考虑过这个问题,因为与许多平台相比,Node的包pipe理似乎很神奇。 我会想象一些大规模的Node.js项目甚至包含许多重复的模块(具有相同或相似的版本),这些模块可以合并为较less的数量。 有人可能会认为: 由于重复的依赖关系,存储和传输的数据量增加,增加了开发软件的成本。 较浅的目录结构(特别是在这种情况下)通常更易于浏览和理解。 过长的path名称可能会在某些计算环境中导致问题。 我所build议的(如果这样的事情不存在)是一个Node模块,它: recursion扫描Node项目,收集嵌套的node_modules文件夹的列表,以及相对于项目的根目录埋藏的深度。 将每个嵌套的node_modules文件夹的内容移动到主node_modules文件夹中,编辑每个.js文件的require()调用,以便不引用任何引用。 处理重复依赖项的多个版本 如果没有别的,它会做一个有趣的实验。 你们有什么感想? 我可能遇到什么潜在的问题?

节点:在recursion中遍历目录

我对Node很新颖…我需要敲打Node的asynchronous行为和callback结构。 在这里,我现在正在努力: // REQUIRE ——————————————————————– fs = require('fs'); path = require('path'); // FUNCTION readAllDirs ——————————————————- function readAllDirs(dir, result) { if (!result) { result = function() {}; }; fs.readdir(dir, function(err, list) { if(err) { return result(err) }; list.forEach(function(file) { var fullpath = path.resolve(dir, file); fs.stat(fullpath, function(err, stat) { if(err) { return result(err) }; if(stat && stat.isDirectory()) […]

asynchronous数据库使用recursion调用

我有一个需要recursion下降链接列表数据库树 item 1-> item 2 -> item 3 -> item 4 -> item 5 -> item 6 -> item 7 -> item 8 我的伪代码是 var getItems = function(itemid) { db.getitem(itemid, function(item) { item.items.forEach(function(subitem) { getItems(subitem.id) }) }) getItems(1) 不过, db.getItem是一个asynchronous函数 我想返回一个JS对象与图的结构相同的顶级调用者 达到这个目标的最好方法是什么? 我不知道前面的结构(即不知道每件物品的数量,或树中任何分支的深度),所以我不知道我需要处理的物品数量 我已经尝试了asynchronous库的各种方法,但似乎没有处理recursion

meteor观察arrays服务器端

我有一个recursion函数,在服务器端asynchronous构build一棵树,我想“观察”它,每次有变化时,都会重新运行Meteor中的调用方法。 我做了一个简单的例子,用一个recursionreaddir调用来构build一棵树(在实际的应用程序中,每个节点可能需要几分钟的计算,其结果取决于已经探索的节点) 在server / methods.js中 var fs = Meteor.npmRequire('fs') var path = Meteor.npmRequire('path') var tree = function (dir, r) { try { fs.readdir (dir, function (error, files) { if (files && files.length) for (var i = 0; i < files.length; i++) { r[i] = { name : files[i], children : [] } tree(path.resolve(dir, files[i]), r[i].children) […]

用node.jsrecursion无限循环

我想recursion循环一些函数,以便在最后一个函数之后,它将会返回到第一个函数,并且它将永远持续下去。 任何人都可以帮我一下吗? 我也想知道是否有适当的教程或者什么东西可以帮我解决js循环和stream量控制中的这些问题。 我试过在线教程虽然但不能正确理解。 var util = require('util'); var async = require('async'); var SensorTag = require('./index'); var USE_READ = true; SensorTag.discover(function(sensorTag) { console.log('discovered: ' + sensorTag); sensorTag.on('disconnect', function() { console.log('disconnected!'); process.exit(0); }); async.series([ /*func 1*/ function(callback) { console.log('connectAndSetUp'); sensorTag.connectAndSetUp(callback); }, /*func 2*/ function(callback) { console.log('readDeviceName'); sensorTag.readDeviceName(function(error, deviceName) { console.log('\tdevice name = ' + deviceName); callback(); […]

像mongoose文件的结构一样在树上recursion

我需要帮助从我的数据库通过get请求拉出对象的对象,所以我可以在我的网页上显示所有的对象,但是我运行的这个testing已经失败了,debugging它,它只是运行到永远,并且从不接收JSON。 我认为我的逻辑可能会被搞乱。 我不确定是否应该使用asynchronous,这看起来像callback地狱,现在想想我应该,但我不知道如果在优化思考如果这是一个体面的方式,我通常从最坏的情况下,我试图低于我的目标是围绕O(N),因为有N个文件,我只是遍历一个recursion树,还有一些额外的查询,以find最初的文件和什么不是这样,N + X(其中x是额外的查询量<N)。 但是我觉得我好像在思想上错过了一些东西,好像有更好的办法。 我有一个架构,像这样 Doc { title : string, author : string, subDoc : [{type: mongoose.Schema.Types.ObjectId, ref : 'Doc'}] } 所以有我生成的文件,每次我生成这些文件我有这些文件可以存在的子文档,甚至这些子文档可以有子文档。 然后我们结束了一些树状结构。 但是我不想显示文档>然后它的sub_doc1>所有的子目录…等>其子文档2>所有的子文档..>等等。 不过,我不知道我在想什么是有效的,甚至是值得做这么多的查询。 app.get('/docs/:doc/subDocTree', function(req, res) { var array = []; var id = req.params.doc; var num_proc = 0; console.log(id); Doc.findById(id, function(err, doc) { console.log(doc); for (var x = 0; x […]

NodeJSasynchronous和recursion

我已经广泛search,找不到似乎工作的答案。 我试过Q.deferred,async.series,async.each,我似乎无法得到这个吸盘工作: 这里是代码,这是有效的,但是,在recursion完成之前,“return subTree”会引发“树”导出。 我已经validation了recursion正在挖掘适当的。 我真的需要relaiveChildren的回报,等到recursion调用完成。 exports.tree = function(req, res) { var tree = { 'name': 'New Account' }; var methods = {}; methods.recursiveChildren = function(path) { var subTree = { 'name': path.field.label+":"+path.match+":"+path.value, 'id': path._id, 'parent': path.parent, 'children': [] } Path.find({parent:path._id}).sort({date_created:1}).exec(function (err,childpaths) { for ( var z in childpaths ) { var tmpTree = methods.recursiveChildren(childpaths[z]); […]

NodeJS散列文件在目录中recursion地

我能够在目录中实现recursion文件遍历(即探索目录中的所有子目录和文件)。 为此,我已经使用堆栈溢出各自的post的答案 。 这个片段如下: var fs = require("fs"); var tree = function(dir, done) { var results = { "path": dir, "children": [] }; fs.readdir(dir, function(err, list) { if (err) { return done(err); } var pending = list.length; if (!pending) { return done(null, results); } list.forEach(function(file) { fs.stat(dir + '/' + file, function(err, stat) { if […]

节点javascriptrecursion内存不足

我正在做一个简单的recursion节点来生成所有的10个字符的string。 执行期间我有内存泄漏。 代码如下。 有任何想法吗 ? 我认为它可能会链接到console.log(单词)行。 没有这条线,代码似乎工作。 但是,如果将结果打印到屏幕上,我的最终目标是使用生成的单词实现http请求。 我已经尝试过,没有丝网印刷,它也产生了内存不足。 var char = [ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ', '\'' ]; function recurseWord( keyword ){ if ( keyword.length >= 10 ){ return null […]