我有以下代码:
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) 如何检查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'.那么,我该如何检查查询是否不匹配?
我试图删除字符串的破折号和下划线的所有发生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 这样的行为,我做错了什么?我在这里尝试过这个解决方案,但它不起作用,或者我太愚蠢无法理解 - 这是一个选项;)
我有一个问题,我有一个凌乱的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字段的记录,而不是返回错误?
我有一个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 . …
如何从字符串中仅提取应为"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) 我试图通过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的响应标头显示数据的正确内容长度,但接收端显示空对象.
我有一个带有utf-16编码的 csv 文件,需要将其编码更改utf8为 JSON 并将其转换为 JSON。我正在使用csvtojson和iconv-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()方法时,它返回一个空字符串。我怎样才能解决这个问题?
我有一个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) 此函数位于另一个函数内,该函数将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}?