Tag: 数组

将promisevariables分解成命名variables

我有这样的事情 Promise.all( categories.map(category => Collection.find({ category })) ).then(items => { return items }) 但后来我只是得到一个数组,其中每个元素是在特定类别中的Collection中find的项目的数组。 我想要的是返回一个对象,其中的键是类别。 所以如果我的类别是football , volleyball和motorsport ,我想要 { 'football': […], 'volleyball': […], 'motorsport': […] } 代替 [ […], […], […] ] 就像我现在一样。 如果类别的数量是静态的,我想我可以做这样的事情 Promise.all( categories.map(category => Collection.find({ category })) ).then(([football, volleyball, motorsport]) => { return { football, volleyball, motorsport } })

splice()方法工作,但是数组在执行后不会改变

我正在使用express.js(node.js)来构build一个应用程序。 我有一个产品数组在app.js文件夹中声明为会话(req.session.products)。 这是邮政路线: router.post('/remove-cart', (req, res, next) => { var product_id = req.body.product_id; //get product id from client console.log(req.session.products) var n = req.session.products.indexOf(product_id); //get position of product id in the array req.session.products.splice(n, 1); //remove it console.log(req.session.products) }); 在路由的末尾,当n = 0时logging下来: [ '1', '3', '3', '3', '3' ] [ '3', '3', '3', '3' ] 这是我期待的,但是,这不会影响主要会议(req.session.products),并不sorting“保存”它。 为什么?

MongoDB – 如何访问数组中的对象

我无法用文字来形容我的想法,所以这里是一个例子: [ { 'description': 'fruits', 'examples': [ { 'name': 'Apple', 'color': ['red', 'green'] }, { 'name': 'Banana', 'color': 'yellow' } ] }, { 'description': 'vegetables', 'examples': [ { 'name': 'Tomato', 'color': 'red' }, { 'name': 'Carrot', 'color': 'orange' } ] }, { 'description': 'Wweets', 'examples': [ { 'name': 'Chocolate', 'color': ['brown', 'black', 'white'] }, { […]

如何在不使用模式configuration参数的情况下使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach?

一直谷歌search几个小时,并不能真正find一个坚实的答案。 也许我使用了错误的search参数? 反正我在这里: 我是MongoDB的新手,并试图在保存之前更改模式实例化的值。 我知道有很多使用“保存”中间件的post,但我不认为这将解决我的问题。 我有这样的模式devise: var fooSchema = new mongoose.Schema({ data:{ type1: { objectfoo: [], objectbar: [] }; type2: { objectxxx: [], objectyyy: [] }; } }); 这不是一个无限的对象,所以我不想做喜欢的东西,如链接到另一个架构或集合。 我想做一些事情: for(i in data){ for(j in data[i]){ data[i][j].push(val); } } 但是,它会给我一个“未定义的错误”,或者说,对象不存在,并出错。 我在第一个for循环中做了一个console.log ,事实certificate,不仅for(… in …)select数据字段,而且还select模式实例化中的configuration字段,如: $__delta $__version increment $__where remove model $__buildDoc init $__storeShard toJSON [Function] […]

保持产生进程的Node.js结果

最近我一直在使用Node.js,并且遇到问题,find一种方法来跟踪返回到请求的subprocessstdout的结果。 我有一个文件中的主机名列表,我的应用程序读取文件,使用一个简单的正则expression式从文件中一次一行地拉动主机名,使用拆分。 然后我创build一个主机名数组。 然后,对于数组中的每个主机名我build立一个参数string,并使用该参数string产生一个进程,但是,我没有办法从进程内访问计数variables“我”,我无法find一种方式来跟踪结果返回到input。 我的程序应该采取每个主机名称,并使用“subprocess”调用snmp,然后它应该创build和arrays{主机名:“snmp-result”},最后一次完成后,将数组保存到文件。 我正在使用此程序尝试从networking设备中提取序列号。 我已经重写了这个代码大约5次,我甚至用一个函数嵌套在spawn过程中,而不是一个on数据事件发射器,但是我很茫然。 相关代码如下: var spawn = require('child_process').exec; var split = require('split'); var fs = require('fs'); var snRe = '"(.*?)"'; var devRe = "(junos\\-([az]|[0-9])+\\-([az]|[0-9])+$)"; var devices = []; var output = []; var outfile = fs.createWriteStream('vri.txt',{'flags':'w'}); var infile = fs.createReadStream('devices',{flags: 'r', encoding: 'utf8'}) var spawnCmd = "/usr/local/bin/snmpwalk -v2c -c public" var […]

Javascript forEach中删除元素

我试图做一个函数,可以从一个forEach循环中删除一个元素。 function: loopAndEdit = function(array,callback) { var helper = { data:{}, get:function() { return helper.data; }, remove:function() { index = array.indexOf(helper.data); array.splice(index,1); return true; } }; tempArray = array; tempArray.forEach(function(row) { helper.data = row; callback(helper) }); } 为了testing它,我遍历一个数组并尝试删除所有元素: names = ['abe','bob','chris']; loopAndEdit(names,function(helper){ console.log('Working on ' + helper.data); helper.remove(); }); console.log(names); 输出是: Working on abe Working […]

下面的代码等待forEach完成

我有一个包含各种数据的大型数组,以及一个对数组执行一些基本的但是耗时的分析的函数。 我使用forEach循环遍历数组。 如果条件满足,我希望函数返回一个特定的元素,否则使用Promises,因为函数可能需要大量的时间来完成: var analyzeData = function (arr) { return new Promise(function (resolve, reject) { var answer = false; arr.forEach(function (elm) { if (elm.foo == true) { answer = elm; } }); resolve(answer); }); } 我遇到的问题是,我怀疑在forEach循环完成之前, answer正在解决; 即在forEach循环可以完成检查每个元素的foo属性之前,函数parsing为answer ,默认为false。 有没有办法确保forEach循环之后的代码等待循环完成迭代,或者以其他方式循环访问数组?

我们可以在Redis中将32位int数组作为一个键值设置为node.js中的二进制数据吗?

我想使用node.js将int数组设置为redis作为二进制数据,每个int数字必须是4个字节。 我该怎么做,并得到它? 价值可以 var arr=[0,1,2,3,4]; var arr=new Int32Array([0,1,2,3]); 或者其他一些types,只要是node.js。

平整嵌套的callback

这是一个callback(稍微修改/简化为这个问题的目的)我已经写了处理一些对象数据。 function (err, data) { var rv; if (data && data.result instanceof Array) { rv = data.result.map(function (value) { if (value && value.track_contributions instanceof Array) { return value.track_contributions.map(function (innerValue) { if (innerValue && innerValue.track) { return innerValue.track.mid; } }); } }); // flatten nested arrays rv = [].concat.apply([], rv); } console.log(rv); }; 以下是我正在处理的对象: { "result": […]

检查快速请求数据是否是数组

我正在使用Express 3.x API服务器(不要问我为什么不升级到4.x;我不能控制这个),而且我试图实现对批量请求的支持一个特定的终点。 端点目前支持常规请求(需要一个JSON对象),但是我希望它也能够获取JSON对象的数组,例如: POST /api/posts Body: [ { "title": "Hello World", "text": "blah blah" }, { "title": "Hello World 2", "text": "blah blah blah" } ] 当我尝试使用req.body访问请求的单个请求的req.body ,我可以检索数据就好(这只是一个常规的JSON对象)。 但是,当我发送数组时,我发现数据被parsing为对象(?)而不是数组。 req.body = { "title": "Hello World", "text": "blah blah" }; typeof req.body; // object req.body.toString(); // [object Object] req.body = [ { "title": "Hello World", […]