mongoosejs 有一个跟 mongodb 的兼容性表格:
MongoDB Server 2.4.x: mongoose ^3.8 or 4.x
MongoDB Server 2.6.x: mongoose ^3.8.8 or 4.x
MongoDB Server 3.0.x: mongoose ^3.8.22, 4.x, or 5.x
MongoDB Server 3.2.x: mongoose ^4.3.0 or 5.x
MongoDB Server 3.4.x: mongoose ^4.7.3 or 5.x
MongoDB Server 3.6.x: mongoose 5.x
MongoDB Server 4.0.x: mongoose ^5.2.0
这是由于mysql自带的一段时间无动作会自动关闭的机制
使用闭包可以完美解决问题
var mysql = require('mysql')var sqlConfig = {host: 'localhost',user: 'root',password: 'pwd',database: 'dbbase'}var conn = function(){let connection = mysql.createConnection(sqlConfig)connection.connect()connection.on('error',err=>{console.log('Re-connecting lost connection: ');connection = mysql.createConnection(sqlConfig)})return function(){return connection}}module.exports = conn()
————————————————
版权声明:本文为CSDN博主「apades」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41535611/article/details/100798135
本文总结常见的使⽤node操作redis服务,redis的key是唯一的,如果一个key所对应的存储类型是string,则不能再次覆盖式设置key为hash;
docker run -d --name redis -p 6379:6379 redis:2.8
const redis = require('redis');const client = redis.createClient( 6379, '127.0.0.1');const util = require('util');
client.set('hello', 5, function(err, obj) {client.incr('hello', function(err,data) {client.get('hello', function(err,data) {console.log(data); // 6})})})
var obj = {name:'sss',age:223}client.hset("test", obj, function(err, obj) {client.hgetall('test', (err, obj) => {console.log(`hgetall:${JSON.stringify(obj)}`);console.log(obj.age);})clie
刚刚开始学js,本文是基于node.js和websocket实现一个简单的在线聊天室系统(聊天群)。
本文适合纯小白阅读。
废话不多说,我们正式开始。
在B/S架构中,我们要得到一个数据,要向服务器请求,然后服务器响应。那么如果我们客户端不发送请求,服务器会不会主动给我们的客户端(浏览器)发东西呢?
答案是不会的,客户端和服务器通过TCP/IP协议进行连接,然后通过HTTP协议进行请求连接。而HTTP协议是一个请求—响应式的协议,而且它是一个无状态的协议,即每一次请求—响应之间是没有关系的。
而我们的聊天室需要什么呢?
1.发送消息 2.接收消息
在接收消息中:一个客户端给服务器发送消息,服务器接收消息,然后主动发给另一个客户端。
所以HTTP满足不了我们的要求。这里我们就要用到socket协议。当服务器与客户端连接后,两者都会时刻做着收发消息的准备。
首先在npm中下载socket.io模块(之前要安装了node.js才行)。打开cmd。
(我创建了一个node.js chat文件夹,文件都放在这里面)
然后开始写我们的服务器代码,创建文件server.js。
//server.jsvar http = require('http');var fs = require('fs');var ws = require('socket.io'); //引入socket.iovar server = http.createServer(function (req, res) {var html = fs.readFileSync('./client.html');//client.html是发送给客户端的文件(客户端界面)res.end(html);}).listen(8000);var io = ws(server); //http服务与ws服务相关联, 返回io服务实例//监听用户的连接事件io.on('connection',function (socket) {//发生在用户连接io服务器时console.log('有新用户进入房间');//消息
一、 npm 运行错误:npm ERR! cb() never called!
D:\ProgramFiles\nodejs>npm installnpm ERR! cb() never called!npm ERR! This is an error with npm itself. Please report this error at:npm ERR! <https://npm.community>npm ERR! A complete log of this run can be found in:npm ERR! D:\ProgramFiles\nodejs\node_cache\_logs\2018-12-26T11_06_54_492Z-debug.log
二、 错误原因
三、 解决方案
npm cache clean --force
npm config rm proxynpm config rm https-proxy
操作完以上步骤问题基本就解决了,如果还又错误就要详细看看是什么错误了!
自从Node横空出世后,很快有人就用它来开发爬虫,网上也常见Node爬虫教程。然而,很难看到一个通用的、功能丰富的爬虫开源项目,到Github上找了一下找到这个,算是目前能找到的最好的了。
这里将它的文档翻译一下,期待更多的实用案例。
node-crawler
目标打造成Node社区最强大和流行的爬虫/内容抽取工具库,且支持生产环境。
特性:
更新日志:https://github.com/bda-research/node-crawler/blob/master/CHANGELOG.md
$ npm install crawler
var Crawler = require("crawler");var c = new Crawler({maxConnections : 10,// 这个回调每个爬取到的页面都会触发callback : function (error, res, done) {if(error){console.log(error);}else{var $ = res.$;// $默认使用Cheerio// 这是为服务端设计的轻量级jQuery核心实现console.log($("title").text());}done();}});// 爬取一个URL,使用默认的callbackc.queue('http://www.amazon.com');// 爬取URL列表c.queue(['http://www.google.com/','http://www.yahoo.com']);// 爬取页面,自