小编Rod*_*ros的帖子

延迟节点js中的每个循环迭代,async

我有以下代码:

var request = require('request');
var cheerio = require ("cheerio");
var async= require("async");

var MyLink="www.mylink.com";

    async.series([

        function(callback){
            request(Mylink, function (error, response, body) {
                if (error) return callback(error); 
                var $ = cheerio.load(body);
                //Some calculations where I get NewUrl variable...
                TheUrl=NewUrl;
                callback();
            });
        },
        function(callback){
            for (var i = 0; i <=TheUrl.length-1; i++) {
                var url = 'www.myurl.com='+TheUrl[i];
                request(url, function(error, resp, body) { 
                    if (error) return callback(error); 
                    var $ = cheerio.load(body);
                    //Some calculations again...
                    callback();
                });
            };
        }
      ], function(error){
        if (error) …
Run Code Online (Sandbox Code Playgroud)

javascript for-loop node.js

13
推荐指数
5
解决办法
3万
查看次数

在node.js mysql查询中,检查是否找不到匹配项

如何检查mysql(node.js)中是否找不到匹配项?

mysql.query("select * from table1 where name = 'abcd'", function(error, result, field) {
    if(error) {
        exist(error); //No error
    } else if(result) {
        console.log(result);  //displays '[]'
        exist(null, result);
    } else {
        exist(null, null); //It is never execute
    }
});
function exist(error, result) {
    if(result)
        console.log("Test:"+result); //Executed and displays 'Test:'
}
Run Code Online (Sandbox Code Playgroud)

我的数据库不包含name ='abcd'.那么,我该如何检查查询是否不匹配?

javascript mysql node.js node-mysql

12
推荐指数
1
解决办法
3万
查看次数

String.prototype.replace()删除破折号和下划线

我试图删除字符串的破折号和下划线的所有发生String.prototype.replace(),但它不起作用,我不知道为什么.我的代码:

var str = "dash-and_underscore";
str = str.replace(/_|\-/, " ");
console.log(str);
Run Code Online (Sandbox Code Playgroud)

输出:

"dash and_underscore"
Run Code Online (Sandbox Code Playgroud)

在Chrome控制台中.

既然|ORopperator 这样的行为,我做错了什么?我在这里尝试过这个解决方案,但它不起作用,或者我太愚蠢无法理解 - 这是一个选项;)

javascript regex

6
推荐指数
1
解决办法
1万
查看次数

Mongoose查询缺少(或未定义)字段的位置

我有一个问题,我有一个凌乱的MongoDB数据库与修订的Mongoose方案.

我希望能够使用该where命令进行查询,但如果该字段丢失或undefined在任何找到的记录中,则Mongoose会返回错误.

例如:

  return this.find({personID: req.user._id})
  .where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)

这会返回错误,因为某些记录没有rangeBefore.

我想要实现的是没有rangeBefore字段的任何记录被过滤掉(即它没有通过where测试).

我试过exists像这样的前缀:

  return this.find({personID: req.user._id})
  .exists('rangeBefore').where('rangeBefore').lt(time);
Run Code Online (Sandbox Code Playgroud)

但我仍然得到一个错误.

任何人都可以建议一种方法来忽略带undefined字段的记录,而不是返回错误?

mongoose mongodb node.js

6
推荐指数
1
解决办法
1万
查看次数

npm安装git子模块的依赖项

我有一个git项目,把handlebars.js作为一个子模块.我将在这里提供一个简单的例子 - 完整的项目更复杂,dojo任务和部署步骤在这里不相关.

$ mkdir handlebarstest ; cd handlebarstest ; git init
$ mkdir src ; git add src
$ git submodule add https://github.com/wycats/handlebars.js.git src/handlebars.js
Run Code Online (Sandbox Code Playgroud)

我们package.json没有提到handlebars.js,只是咕噜声:

{
  "name": "handlebarstest",
  "version": "1.0.0",
  "dependencies": {},
  "devDependencies": {
    "grunt": "~0.4.1",
    "grunt-contrib-clean": "~0.4.1",
    "grunt-run-grunt": "latest"
  }
}
Run Code Online (Sandbox Code Playgroud)

在这个项目的历史中,我们的安装和构建过程是:

$ npm install   # install dependencies in package.json
$ grunt init    # run the 'init' task which initialises git submodules
$ grunt build   # run the 'build' task which compiles dojo etc.
Run Code Online (Sandbox Code Playgroud)

完成了我们项目的新克隆,比如在我们的构建服务器上,git子模块需要初始化,我们从grunt控制它,所以我们必须先安装grunt,然后运行一个任务到init子模块,包括麻烦的把手.js . …

git npm handlebars.js gruntjs

5
推荐指数
2
解决办法
3338
查看次数

如何从字符串中提取包含字符和数字的最后一位数字

如何从字符串中仅提取应为"5"的最后一个数字?

var str = "1000040928423195 points added to your balance";
var str = parseInt(str);
var lastNum = str.substr(str.length - 1);
console.log(lastNum);
Run Code Online (Sandbox Code Playgroud)

javascript

5
推荐指数
1
解决办法
2065
查看次数

使用Express.js和NodeJS,您可以通过响应正文中的重定向发送JSON

我试图通过302重定向发送JSON.这在ExpressJS中是否可行.API声明可以添加正文res.json().例如:

res.json(302, {'name': 'larry'}).
Run Code Online (Sandbox Code Playgroud)

在接收端(重定向也在那里),身体是空的.以下是一些示例代码:

发送应用程序

app.get('/hello', function(req,res){
  var data = {'name': 'larry'};
  res.set('location', 'http://www.example.com/sending');
  res.json(302, data);
});
Run Code Online (Sandbox Code Playgroud)

接收应用程序

app.get('/sending', function(req,res){
  console.log('Body: ' + req.body)
  res.send(req.body);
});
Run Code Online (Sandbox Code Playgroud)

注意:302的响应标头显示数据的正确内容长度,但接收端显示空对象.

json node.js express

4
推荐指数
1
解决办法
9765
查看次数

Node js:以编程方式更改 csv 文件编码并解析为 json

我有一个带有utf-16编码的 csv 文件,需要将其编码更改utf8为 JSON 并将其转换为 JSON。我正在使用csvtojsoniconv-lite模块。这是我的代码:

var data = fs.createReadStream("myfile.csv");
data.pipe(iconv.decodeStream('utf16'))
  .pipe(iconv.encodeStream('utf8'))
  .pipe(fs.createWriteStream("encoded.csv"));
var Converter = require("csvtojson").Converter;
var csvStr = fs.readFileSync("encoded.csv").toString();
var converter = new Converter({});
converter.fromString(csvStr, function(err, jsonObj) {
    if (err) {
        handleError(err)
    }
    console.log(jsonObj)
});
Run Code Online (Sandbox Code Playgroud)

问题是iconv使用正确的编码转换 csv 文件,但是当我读取此文件并调用toString()方法时,它返回一个空字符串。我怎样才能解决这个问题?

csv encoding json node.js

3
推荐指数
1
解决办法
5144
查看次数

在mongoose中对嵌套数组进行排序

我有一个PlaylistShema与阵列或音乐.在这一系列的音乐中,我有一个ObjectId(谁参考音乐收藏),一个addedAt和一个title.

PlaylistShema

var PlaylistSchema = new Schema({
  title: {type : String, default : '', trim : true},
  user: {type : Schema.ObjectId, ref : 'User'},

  musics : [{ 
    musicId : {type : Schema.ObjectId , ref : 'Music'},
    title : {type : String},
    addedAt : {type : Date, default : Date.now}
  }],

  tags : { type : [], get : getTags, set : setTags},
  createdAt  : {type : Date, default : Date.now}
})
Run Code Online (Sandbox Code Playgroud)

我有一个静态加载播放列表:

加载功能

  load: …
Run Code Online (Sandbox Code Playgroud)

javascript arrays mongoose mongodb node.js

2
推荐指数
1
解决办法
6288
查看次数

重复使用写入流而不结束它并一遍又一遍地声明新流

此函数位于另一个函数内,该函数将wStream写入流设置为wStream成功运行的文件.

但是这样做

fs.watch(fname, function watcher (evt, fname) {


        if (evt === 'change') {
            wStream.write("File " + fname + " changed\n");

        } else if (evt === 'rename') {
            wStream.write("File " + orig + " renamed\n");

        }
Run Code Online (Sandbox Code Playgroud)

产生此错误

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: write after end
    at writeAfterEnd (_stream_writable.js:167:12)
    at WriteStream.Writable.write (_stream_writable.js:214:5)
Run Code Online (Sandbox Code Playgroud)

如何在不结束此流的情况下继续重复使用它?

更新 正如评论部分所指出的,有一个流程明确地结束了这个流.

我正在运行一个child_process.spawn方法就像

SomeSpawn.stdout.pipe( wStream ); 
Run Code Online (Sandbox Code Playgroud)

关闭此流的原因和原因是什么?我怎样才能阻止它明确地关闭它?类似的东西{end:false}

stream child-process node.js

2
推荐指数
1
解决办法
779
查看次数