Tag: 数组

Nodejsasynchronous数据重复

我在nodejs上有一个asynchronous进程有问题。 我从远程JSON获取一些数据,并将其添加到我的数组中,这个JSON有一些重复的值,我需要检查它是否已经存在于我的数组之前,添加它,以避免数据重复。 我的问题是,当我启动JSON值之间的循环,循环调用下一个值,在最后一个过程完成之前,所以,我的数组充满重复的数据,而不是保持每个types只有一个项目。 看我目前的代码: BookRegistration.prototype.process_new_books_list = function(data, callback) { var i = 0, self = this; _.each(data, function(book) { i++; console.log('\n\n ———————————————————— \n\n'); console.log('BOOK: ' + book.volumeInfo.title); self.process_author(book, function() { console.log('in author'); }); console.log('\n\n ————————————————————'); if(i == data.length) callback(); }) } BookRegistration.prototype.process_author = function(book, callback) { if(book.volumeInfo.authors) { var author = { name: book.volumeInfo.authors[0].toLowerCase() }; […]

与mongoose的交易行为

假设我有一个mongoose模式A 它看起来像这样: { arr: [{ num: Number, text: String }] } 现在我要执行以下操作: select一个即a 。 获取a.arr项目的实际数量。 向a.arr添加一个新的元素,数量和文本。 我的实现: A.findOne({_id: someId}, function(err, a) { var count = a.arr.length; a.push({ count: count, text: 'some text' }); a.save(…) }); 到目前为止工作良好。 但我的问题:如果我执行并发,让我们说5个进程,一些进程执行findOne之前保存其他人。 因此,前几个计数为0,然后在保存时立即为3或4进行下一个进程。 但是我想要执行串行。 如何实现? 谢谢!

对于在NodeJS中遍历数组的循环,但console.log不会打印到terminal?

我使用Node.JS来遍历一些数据,并将数据推送到一个数组。 但是,console.log似乎没有显示我所做的任何更改。 我希望能够处理twitter_ids中的数据后,function完成数据。 我想知道是不是因为Node.JS的asynchronous性质的误解? var twitter_ids = [] function sendResults (twitter_ids){ return function(data){ for (var num in data['results']) { T.get('users/lookup', { screen_name: data['results'][num]['twitter_id'] }, function(err, data, response) { twitter_ids.push(data[0]['id']); }); } console.log(twitter_ids); } } sunlightResults.call(sendResults(twitter_ids));

node.js,restify – 处理数组types的参数

我有一个node.js服务器restify。 我想发送一个获取请求,其中有一个名称的数组。 我认为请求应该是这样(但我不确定): /users?names=bob,joe,michael,joey 这个查询是否正确? 如何获取我在node.js服务器上发送的名称?

没有find全局定义的variables

我已经声明了一个全局variablesvar linkArray=[] ,但是它并没有在phantomJS函数中被拾取。 错误消息是: phantom stdout: ReferenceError: Can't find variable: linkArray 。 我怎样才能find这个? 我试着用window.linkArray声明它,但是因为这是一个无头应用程序,所以我得到了一个不同的错误, ReferenceError: window is not defined 。 因此,我需要一种方法来使var linkArray=[]全局。 var phantom = require('phantom'); var linkArray=[]; phantom.create(function (ph) { ph.createPage(function (page) { var main_file="file:///C:/whatever/index.html"; page.open(main_file, function (status) { console.log("opened " + main_file +"\n",status+"\n"); page.evaluate(function () { for (var i=0; i < document.getElementsByTagName('a').length; i++) […]

Async.map – 使其忽略错误,并处理整个列表

我必须使用asynchronous处理数组 var arr = [1,2,3,4]; Async.map(arr, iterator, callback); 我无法控制的iterator函数会抛出所有值的错误,比如4 。 function iterator(val, cb) { console.debug('processing', val); if (val == 4) cb(); else cb(new Error(val)); } asynchronous会做什么 如果iterator将错误传递给callback函数,则主callback函数(对于map函数)立即被调用并返回错误。 所以我明白了 processing 1 [Error: 1] processing 2 processing 3 processing 4 我想要的是它不应该立即调用带有错误的callback函数,而是等待它处理整个列表,然后调用callback函数。 这可能吗? 还是有一种替代Async.map这样的行为?

从数组中的元素修改空白元素

我有以下数组数组: arr1= ["avd befe, bla, bla, bla, bla", "cveve devev, bla, bla, bla, bla", "aava beve. cavbr, bla, bla, bla, bla", "feve gyhyh, bla, bla, bla, bla", "ibtbt, bla, bla, bla, bla"] 在我的例子中,我关注的是数组中的第一组字符。 这些可以包括格式为“x”,“xy”(两个字符组之间的空格)和“xyz”(三个字符组之间有两个空格)的项目。 我想从第三组元素中删除y(所以“xyz”变成“xz”)。 上面显示的arr1是一个例子 – 我正在使用的数组有两百个条目。 在上面的例子中,我想要“aava beve。cavbr”成为arr1中第三个元素的“aava cavbr”。

Node.js过滤多个项的数组

我有一个文件数组,其中包含一组文本文件,格式如下: [test / fixtureData / fixtureData2 / test3.inc,test / fixtureData / fixtureData3 / test5.inc,test / fixtureData / test1.inc,test / fixtureData / test6.ssi,test / fixtureData / test9.html] 我想过滤这个数组,以便过滤掉'.ssi'和'.html'文件。 和下面的代码: var recursiveReadSync = require('recursive-readdir-sync'), var fs = require('fs'); var foundFiles = []; var files = fs.readdirSync(url); 我通过一个文件recursion,为了不粘贴我的整个代码的简单性,假设文件数组包含上面列出的项目。 我不知道如何过滤这个文件数组,我已经看了几个nodeJS API,并没有发现任何东西

基于对象属性查询Mongoose文档

我有以下的mongoose模式: var UserSchema = new Schema({ name: String, age: Number, … tags: [{ text: String, … }] }); 和下面的数组: var tagTexts = ['tall', 'small', 'green', 'blue']; 我想检索所有包含至less一个标签的用户文档,其中包含tagTexts中的文本属性。 例如,如果我有以下用户和tagTexts数组 [{ name: 'Bob', age: 17, … tags: [{ text: 'small', … }] }, { name: 'Bill', age: 29, … tags: [{ text: 'dandelion', … }, { text: […]

mongoosevalidation匹配一个数组与另一个数组的常见string?

我的mongoose模式+validation var schemaInterest = new schema({ active_elements: { type: [String] }, pending_elements: { type:[String] } }); schemaInterest.methods.matchElements = function matchElements() { this.find({active_elements: this.pending_elements}, function(){ //shows all the matched elements }); }; 我不知道如何在mongoose中处理error handling。 我想这样如果元素匹配错误将返回,如果没有匹配,那么validation是成功的。 有任何想法吗?