Nodejs 操作 MongoDb 数据库

一、在 Nodejs 中使用 Mongodb

在前面的博文我们给大家讲了如何使用命令操作 Mongodb,这篇博文开始我们给大家讲解一 下如何使用 Nodejs 来操作 Mongodb 数据库

Nodejs 操作 mongodb 数据库官方文档:https://www.mongodb.org.cn/drivers/5.html

npm install mongodb --save 
或者
cnpm install mongodb --save 
或者
yarn add mongodb

二、Nodejs 连接 MongoDb 数据库

const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017'; // const url = 'mongodb://admin:123456@localhost:27017/'; 有密码连接方式 
const dbName = 'itying'; 
const client = new MongoClient(url,{ useUnifiedTopology: true }); 
client.connect(function(err) { if(err){console.log(err); return; }console.log("连接成功"); //获取 db 对象 const db = client.db(dbName); });

注意:如果数据库开启了权限验证的话需要使用下面方式连接数据库
其中:admin 表示用户名,123456 表示密码

const url = 'mongodb://admin:123456@localhost:27017/';

三、Nodejs 查找 MongoDb 数据库的数据

const MongoClient = require('mongodb').MongoClient; 
const url = 'mongodb://localhost:27017'; 
const dbName = 'itying'; 
const client = new MongoClient(url,{ useUnifiedTopology: true }); 
client.connect(function(err) { if(err){console.log(err); return; }const db = client.db(dbName); //获取 db 对象 db.collection("user").find({}).toArray(function(err,data){ //查找 if(err){console.log(err); return; }console.log(data); client.close(); }) 
});

四、Nodejs 给 MongoDb 增加数据

const MongoClient = require('mongodb').MongoClient; 
const url = 'mongodb://localhost:27017'; 
const dbName = 'itying'; 
const client = new MongoClient(url,{ useUnifiedTopology: true }); 
client.connect(function(err) { if(err){console.log(err); return; }//获取 db 对象 const db = client.db(dbName); //新增数据 db.collection("user").insertOne({"username":"nodejs","age":10},(err,result)=>{ if(err){console.log(err); return; }console.log(result); client.close(); }) });

五、Nodejs 修改 MongoDb 数据

const MongoClient = require('mongodb').MongoClient; 
const url = 'mongodb://localhost:27017'; // const url = 'mongodb://admin:123456@localhost:27017/'; 有密码连接方式 
const dbName = 'itying'; 
const client = new MongoClient(url,{ useUnifiedTopology: true }); 
client.connect(function(err) { if(err){console.log(err); return; }const db = client.db(dbName); //获取 db 对象 db.collection("user").updateOne({"name":"zhangsan"},{$set:{"age":50}},(err,result)=>{ if(err){console.log(err); return; }console.log(result); client.close(); })});

六、Nodejs 删除 MongoDb 数据

const {MongoClient,ObjectID} = require('mongodb'); 
const url = 'mongodb://localhost:27017'; 
const dbName = 'itying'; 
const client = new MongoClient(url,{ useUnifiedTopology: true });
client.connect(function(err) { if(err){console.log(err); return; }//获取 db 对象 const db = client.db(dbName); //删除数据 db.collection("user").deleteOne({ "username" : "nodejs" }, function(err, result) { if(err){ console.log(err); return; }console.log(result); client.close(); }); 
});

七、完整代码

/* 1.引入mongodb */
// const MongoClient = require('mongodb').MongoClient;
const { MongoClient } = require('mongodb');/* 2.定义数据库连接的地址 */
const url = 'mongodb://admin:admin@127.0.0.1:27017';/* 3.定义要操作的数据库 */
const dbName = 'itying';/* 4.实例化MongoClient 传入数据库连接地址 */
const client = new MongoClient(url, { useUnifiedTopology: true });/* 5.连接数据库 */
client.connect((err) => {if (err) {console.log('数据库连接失败!');return;}console.log('数据库连接成功');let db = client.db(dbName);/*  // 查找数据db.collection("user").find({ "age": 20 }).toArray((err, data) => {if (err) {console.log(err);return;}console.log(data);client.close();}) *//* // 增加数据db.collection("user").insertOne({ "name": "nodejs", "age": 10 }, (err, result) => {if (err) {console.log(err);return;}console.log("增加成功");console.log(result);// 6.操作数据库完毕以后一定要关闭数据库连接client.close();}) */// 修改数据/*  db.collection("user").updateOne({"name": "xiaoli"}, {$set:{"age": 100}}, (err, data)=> {if (err) {console.log(err);return;}console.log("修改成功");console.log(data);client.close();})*//* // 删除一条数据db.collection("user").deleteOne({"name": "nodejs"}, (err)=>{if (err) {console.log(err);return;}console.log("删除一条数据成功");client.close();}) */// 删除多条数据db.collection("user").deleteMany({"name": "nodejs"}, (err)=>{if (err) {console.log(err);return;}console.log("删除多条数据成功");client.close();})})

八、实战案例:

浏览器发送get请求 ,访问 /register,渲染出注册页面
在这里插入图片描述

浏览器发送post请求,访问 /doRegister, 后端获取前端提交的表单数据,然后将数据存入mongodb数据库中
在这里插入图片描述
在这里插入图片描述

浏览器发送get请求, 访问 / ,从mongodb数据库查询数据并渲染到前端页面上
在这里插入图片描述

在这里插入图片描述

app.js:

const http = require('http');
const querystring = require('querystring')
const app = require('./module/routes');
const ejs = require('ejs');
const { MongoClient } = require("mongodb");
const url = 'mongodb://admin:admin@127.0.0.1:27017';
const dbName = 'itying';/* 4.实例化MongoClient 传入数据库连接地址 */
// const client = new MongoClient(url, { useUnifiedTopology: true });// 注册web服务
http.createServer(app).listen(8081);
// app.static("public"); // 修改默认静态web目录
// 配置路由
app.get('/', function (req, res) {MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {/* 5.连接数据库 */client.connect((err) => {if (err) {console.log('数据库连接失败!');return;}console.log('数据库连接成功');let db = client.db(dbName);// 查找数据db.collection("user").find({}).toArray((err, result) => {if (err) {console.log(err);return;}console.log(result);client.close();ejs.renderFile("./views/index.ejs", {list: result}, (err, data) => {res.send(data);})})})})})app.get('/register', function (req, res) {ejs.renderFile("./views/register.ejs",{}, (err, data)=> {res.send(data);})
})app.post('/doRegister', function (req, res) {let body = querystring.parse(req.body)console.log(body)MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {if (err) {console.log('数据库连接失败!');return;}console.log('数据库连接成功');let db = client.db(dbName);db.collection("user").insertOne(body, (err, result)=> {if (err) {console.log(err);return;}console.log('添加数据成功');res.send('添加数据成功');})})
})console.log('Server running at http://127.0.0.1:8081/');

routes.js:

const url = require('url')
const path = require('path')
const fs = require('fs')// 扩展res
function changeRes(res) {res.send = (data) => {res.writeHead(200, { 'Content-Type': 'text/html;charset="utf-8"' });res.end(data);}
}// 根据后缀名获取文件类型
let getFileMime = function (extname) {// 把异步读取文件方法改为同步读取文件方法let data = fs.readFileSync('./data/mime.json');let mimeObj = JSON.parse(data.toString())console.log(mimeObj[extname])return mimeObj[extname]
}// 静态web服务的方法
function initStatic (req, res, staticPath){// 1. 获取地址console.log(req.url)let pathname = url.parse(req.url).pathname// 默认加载index.htmlif (pathname == '/') {pathname = '/index.html'} else {pathname = pathname}// 获取路径中的后缀名let extname = path.extname(pathname)// 2.通过fs模块读取文件try {// 把异步读取文件方法改为同步读取文件方法let data = fs.readFileSync('./' + staticPath + pathname);if (data) {let mine = getFileMime(extname)res.writeHead(200, { 'Content-Type': '' + mine + ';charset="utf-8"' });res.end(data);}} catch (error) {}
}let server = () => {let G = {_get: {}, // 把get 和 post分开保存_post: {},staticPath: "static"  // 静态资源web目录}let app = function (req, res) {// 扩展res的方法changeRes(res)// 配置静态web服务器initStatic(req, res, G.staticPath)// 路由let pathname = url.parse(req.url).pathname;// http://127.0.0.1:3000/login  pathname = /login// 获取请求类型let method = req.method.toLowerCase()if (G['_' + method][pathname]) {if (method == "get") {G['_' + method][pathname](req, res); // 表示执行方法} else {// post  获取post的数据  把它绑定到req.body上let postData = '';req.on('data', (chunk) => {postData += chunk;})req.on('end', () => {console.log(postData)req.body = postDataG._post[pathname](req, res); // 表示执行方法})}} else {res.writeHead(404, { 'Content-Type': 'text/html;charset="utf-8"' });res.end('页面不存在');}}app.get = function (string, callback) {// 注册方法G._get[string] = callback/* G['/login'] = function(req, res) {res.send('hello world')}*/// console.log('get方法')}app.post = function (string, callback) {// 注册方法G._post[string] = callback}// 配置静态web服务目录app.static = function (staticPath){G.staticPath = staticPath}return app;}
module.exports = server()

mime.json:


{ ".323":"text/h323" ,".3gp":"video/3gpp" ,".aab":"application/x-authoware-bin" ,".aam":"application/x-authoware-map" ,".aas":"application/x-authoware-seg" ,".acx":"application/internet-property-stream" ,".ai":"application/postscript" ,".aif":"audio/x-aiff" ,".aifc":"audio/x-aiff" ,".aiff":"audio/x-aiff" ,".als":"audio/X-Alpha5" ,".amc":"application/x-mpeg" ,".ani":"application/octet-stream" ,".apk":"application/vnd.android.package-archive" ,".asc":"text/plain" ,".asd":"application/astound" ,".asf":"video/x-ms-asf" ,".asn":"application/astound" ,".asp":"application/x-asap" ,".asr":"video/x-ms-asf" ,".asx":"video/x-ms-asf" ,".au":"audio/basic" ,".avb":"application/octet-stream" ,".avi":"video/x-msvideo" ,".awb":"audio/amr-wb" ,".axs":"application/olescript" ,".bas":"text/plain" ,".bcpio":"application/x-bcpio" ,".bin ":"application/octet-stream" ,".bld":"application/bld" ,".bld2":"application/bld2" ,".bmp":"image/bmp" ,".bpk":"application/octet-stream" ,".bz2":"application/x-bzip2" ,".c":"text/plain" ,".cal":"image/x-cals" ,".cat":"application/vnd.ms-pkiseccat" ,".ccn":"application/x-cnc" ,".cco":"application/x-cocoa" ,".cdf":"application/x-cdf" ,".cer":"application/x-x509-ca-cert" ,".cgi":"magnus-internal/cgi" ,".chat":"application/x-chat" ,".class":"application/octet-stream" ,".clp":"application/x-msclip" ,".cmx":"image/x-cmx" ,".co":"application/x-cult3d-object" ,".cod":"image/cis-cod" ,".conf":"text/plain" ,".cpio":"application/x-cpio" ,".cpp":"text/plain" ,".cpt":"application/mac-compactpro" ,".crd":"application/x-mscardfile" ,".crl":"application/pkix-crl" ,".crt":"application/x-x509-ca-cert" ,".csh":"application/x-csh" ,".csm":"chemical/x-csml" ,".csml":"chemical/x-csml" ,".css":"text/css" ,".cur":"application/octet-stream" ,".dcm":"x-lml/x-evm" ,".dcr":"application/x-director" ,".dcx":"image/x-dcx" ,".der":"application/x-x509-ca-cert" ,".dhtml":"text/html" ,".dir":"application/x-director" ,".dll":"application/x-msdownload" ,".dmg":"application/octet-stream" ,".dms":"application/octet-stream" ,".doc":"application/msword" ,".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,".dot":"application/msword" ,".dvi":"application/x-dvi" ,".dwf":"drawing/x-dwf" ,".dwg":"application/x-autocad" ,".dxf":"application/x-autocad" ,".dxr":"application/x-director" ,".ebk":"application/x-expandedbook" ,".emb":"chemical/x-embl-dl-nucleotide" ,".embl":"chemical/x-embl-dl-nucleotide" ,".eps":"application/postscript" ,".epub":"application/epub+zip" ,".eri":"image/x-eri" ,".es":"audio/echospeech" ,".esl":"audio/echospeech" ,".etc":"application/x-earthtime" ,".etx":"text/x-setext" ,".evm":"x-lml/x-evm" ,".evy":"application/envoy" ,".exe":"application/octet-stream" ,".fh4":"image/x-freehand" ,".fh5":"image/x-freehand" ,".fhc":"image/x-freehand" ,".fif":"application/fractals" ,".flr":"x-world/x-vrml" ,".flv":"flv-application/octet-stream" ,".fm":"application/x-maker" ,".fpx":"image/x-fpx" ,".fvi":"video/isivideo" ,".gau":"chemical/x-gaussian-input" ,".gca":"application/x-gca-compressed" ,".gdb":"x-lml/x-gdb" ,".gif":"image/gif" ,".gps":"application/x-gps" ,".gtar":"application/x-gtar" ,".gz":"application/x-gzip" ,".h":"text/plain" ,".hdf":"application/x-hdf" ,".hdm":"text/x-hdml" ,".hdml":"text/x-hdml" ,".hlp":"application/winhlp" ,".hqx":"application/mac-binhex40" ,".hta":"application/hta" ,".htc":"text/x-component" ,".htm":"text/html" ,".html":"text/html" ,".hts":"text/html" ,".htt":"text/webviewhtml" ,".ice":"x-conference/x-cooltalk" ,".ico":"image/x-icon" ,".ief":"image/ief" ,".ifm":"image/gif" ,".ifs":"image/ifs" ,".iii":"application/x-iphone" ,".imy":"audio/melody" ,".ins":"application/x-internet-signup" ,".ips":"application/x-ipscript" ,".ipx":"application/x-ipix" ,".isp":"application/x-internet-signup" ,".it":"audio/x-mod" ,".itz":"audio/x-mod" ,".ivr":"i-world/i-vrml" ,".j2k":"image/j2k" ,".jad":"text/vnd.sun.j2me.app-descriptor" ,".jam":"application/x-jam" ,".jar":"application/java-archive" ,".java":"text/plain" ,".jfif":"image/pipeg" ,".jnlp":"application/x-java-jnlp-file" ,".jpe":"image/jpeg" ,".jpeg":"image/jpeg" ,".jpg":"image/jpeg" ,".jpz":"image/jpeg" ,".js":"application/x-javascript" ,".jwc":"application/jwc" ,".kjx":"application/x-kjx" ,".lak":"x-lml/x-lak" ,".latex":"application/x-latex" ,".lcc":"application/fastman" ,".lcl":"application/x-digitalloca" ,".lcr":"application/x-digitalloca" ,".lgh":"application/lgh" ,".lha":"application/octet-stream" ,".lml":"x-lml/x-lml" ,".lmlpack":"x-lml/x-lmlpack" ,".log":"text/plain" ,".lsf":"video/x-la-asf" ,".lsx":"video/x-la-asf" ,".lzh":"application/octet-stream" ,".m13":"application/x-msmediaview" ,".m14":"application/x-msmediaview" ,".m15":"audio/x-mod" ,".m3u":"audio/x-mpegurl" ,".m3url":"audio/x-mpegurl" ,".m4a":"audio/mp4a-latm" ,".m4b":"audio/mp4a-latm" ,".m4p":"audio/mp4a-latm" ,".m4u":"video/vnd.mpegurl" ,".m4v":"video/x-m4v" ,".ma1":"audio/ma1" ,".ma2":"audio/ma2" ,".ma3":"audio/ma3" ,".ma5":"audio/ma5" ,".man":"application/x-troff-man" ,".map":"magnus-internal/imagemap" ,".mbd":"application/mbedlet" ,".mct":"application/x-mascot" ,".mdb":"application/x-msaccess" ,".mdz":"audio/x-mod" ,".me":"application/x-troff-me" ,".mel":"text/x-vmel" ,".mht":"message/rfc822" ,".mhtml":"message/rfc822" ,".mi":"application/x-mif" ,".mid":"audio/mid" ,".midi":"audio/midi" ,".mif":"application/x-mif" ,".mil":"image/x-cals" ,".mio":"audio/x-mio" ,".mmf":"application/x-skt-lbs" ,".mng":"video/x-mng" ,".mny":"application/x-msmoney" ,".moc":"application/x-mocha" ,".mocha":"application/x-mocha" ,".mod":"audio/x-mod" ,".mof":"application/x-yumekara" ,".mol":"chemical/x-mdl-molfile" ,".mop":"chemical/x-mopac-input" ,".mov":"video/quicktime" ,".movie":"video/x-sgi-movie" ,".mp2":"video/mpeg" ,".mp3":"audio/mpeg" ,".mp4":"video/mp4" ,".mpa":"video/mpeg" ,".mpc":"application/vnd.mpohun.certificate" ,".mpe":"video/mpeg" ,".mpeg":"video/mpeg" ,".mpg":"video/mpeg" ,".mpg4":"video/mp4" ,".mpga":"audio/mpeg" ,".mpn":"application/vnd.mophun.application" ,".mpp":"application/vnd.ms-project" ,".mps":"application/x-mapserver" ,".mpv2":"video/mpeg" ,".mrl":"text/x-mrml" ,".mrm":"application/x-mrm" ,".ms":"application/x-troff-ms" ,".msg":"application/vnd.ms-outlook" ,".mts":"application/metastream" ,".mtx":"application/metastream" ,".mtz":"application/metastream" ,".mvb":"application/x-msmediaview" ,".mzv":"application/metastream" ,".nar":"application/zip" ,".nbmp":"image/nbmp" ,".nc":"application/x-netcdf" ,".ndb":"x-lml/x-ndb" ,".ndwn":"application/ndwn" ,".nif":"application/x-nif" ,".nmz":"application/x-scream" ,".nokia-op-logo":"image/vnd.nok-oplogo-color" ,".npx":"application/x-netfpx" ,".nsnd":"audio/nsnd" ,".nva":"application/x-neva1" ,".nws":"message/rfc822" ,".oda":"application/oda" ,".ogg":"audio/ogg" ,".oom":"application/x-AtlasMate-Plugin" ,".p10":"application/pkcs10" ,".p12":"application/x-pkcs12" ,".p7b":"application/x-pkcs7-certificates" ,".p7c":"application/x-pkcs7-mime" ,".p7m":"application/x-pkcs7-mime" ,".p7r":"application/x-pkcs7-certreqresp" ,".p7s":"application/x-pkcs7-signature" ,".pac":"audio/x-pac" ,".pae":"audio/x-epac" ,".pan":"application/x-pan" ,".pbm":"image/x-portable-bitmap" ,".pcx":"image/x-pcx" ,".pda":"image/x-pda" ,".pdb":"chemical/x-pdb" ,".pdf":"application/pdf" ,".pfr":"application/font-tdpfr" ,".pfx":"application/x-pkcs12" ,".pgm":"image/x-portable-graymap" ,".pict":"image/x-pict" ,".pko":"application/ynd.ms-pkipko" ,".pm":"application/x-perl" ,".pma":"application/x-perfmon" ,".pmc":"application/x-perfmon" ,".pmd":"application/x-pmd" ,".pml":"application/x-perfmon" ,".pmr":"application/x-perfmon" ,".pmw":"application/x-perfmon" ,".png":"image/png" ,".pnm":"image/x-portable-anymap" ,".pnz":"image/png" ,".pot,":"application/vnd.ms-powerpoint" ,".ppm":"image/x-portable-pixmap" ,".pps":"application/vnd.ms-powerpoint" ,".ppt":"application/vnd.ms-powerpoint" ,".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation" ,".pqf":"application/x-cprplayer" ,".pqi":"application/cprplayer" ,".prc":"application/x-prc" ,".prf":"application/pics-rules" ,".prop":"text/plain" ,".proxy":"application/x-ns-proxy-autoconfig" ,".ps":"application/postscript" ,".ptlk":"application/listenup" ,".pub":"application/x-mspublisher" ,".pvx":"video/x-pv-pvx" ,".qcp":"audio/vnd.qcelp" ,".qt":"video/quicktime" ,".qti":"image/x-quicktime" ,".qtif":"image/x-quicktime" ,".r3t":"text/vnd.rn-realtext3d" ,".ra":"audio/x-pn-realaudio" ,".ram":"audio/x-pn-realaudio" ,".rar":"application/octet-stream" ,".ras":"image/x-cmu-raster" ,".rc":"text/plain" ,".rdf":"application/rdf+xml" ,".rf":"image/vnd.rn-realflash" ,".rgb":"image/x-rgb" ,".rlf":"application/x-richlink" ,".rm":"audio/x-pn-realaudio" ,".rmf":"audio/x-rmf" ,".rmi":"audio/mid" ,".rmm":"audio/x-pn-realaudio" ,".rmvb":"audio/x-pn-realaudio" ,".rnx":"application/vnd.rn-realplayer" ,".roff":"application/x-troff" ,".rp":"image/vnd.rn-realpix" ,".rpm":"audio/x-pn-realaudio-plugin" ,".rt":"text/vnd.rn-realtext" ,".rte":"x-lml/x-gps" ,".rtf":"application/rtf" ,".rtg":"application/metastream" ,".rtx":"text/richtext" ,".rv":"video/vnd.rn-realvideo" ,".rwc":"application/x-rogerwilco" ,".s3m":"audio/x-mod" ,".s3z":"audio/x-mod" ,".sca":"application/x-supercard" ,".scd":"application/x-msschedule" ,".sct":"text/scriptlet" ,".sdf":"application/e-score" ,".sea":"application/x-stuffit" ,".setpay":"application/set-payment-initiation" ,".setreg":"application/set-registration-initiation" ,".sgm":"text/x-sgml" ,".sgml":"text/x-sgml" ,".sh":"application/x-sh" ,".shar":"application/x-shar" ,".shtml":"magnus-internal/parsed-html" ,".shw":"application/presentations" ,".si6":"image/si6" ,".si7":"image/vnd.stiwap.sis" ,".si9":"image/vnd.lgtwap.sis" ,".sis":"application/vnd.symbian.install" ,".sit":"application/x-stuffit" ,".skd":"application/x-Koan" ,".skm":"application/x-Koan" ,".skp":"application/x-Koan" ,".skt":"application/x-Koan" ,".slc":"application/x-salsa" ,".smd":"audio/x-smd" ,".smi":"application/smil" ,".smil":"application/smil" ,".smp":"application/studiom" ,".smz":"audio/x-smd" ,".snd":"audio/basic" ,".spc":"application/x-pkcs7-certificates" ,".spl":"application/futuresplash" ,".spr":"application/x-sprite" ,".sprite":"application/x-sprite" ,".sdp":"application/sdp" ,".spt":"application/x-spt" ,".src":"application/x-wais-source" ,".sst":"application/vnd.ms-pkicertstore" ,".stk":"application/hyperstudio" ,".stl":"application/vnd.ms-pkistl" ,".stm":"text/html" ,".svg":"image/svg+xml" ,".sv4cpio":"application/x-sv4cpio" ,".sv4crc":"application/x-sv4crc" ,".svf":"image/vnd" ,".svg":"image/svg+xml" ,".svh":"image/svh" ,".svr":"x-world/x-svr" ,".swf":"application/x-shockwave-flash" ,".swfl":"application/x-shockwave-flash" ,".t":"application/x-troff" ,".tad":"application/octet-stream" ,".talk":"text/x-speech" ,".tar":"application/x-tar" ,".taz":"application/x-tar" ,".tbp":"application/x-timbuktu" ,".tbt":"application/x-timbuktu" ,".tcl":"application/x-tcl" ,".tex":"application/x-tex" ,".texi":"application/x-texinfo" ,".texinfo":"application/x-texinfo" ,".tgz":"application/x-compressed" ,".thm":"application/vnd.eri.thm" ,".tif":"image/tiff" ,".tiff":"image/tiff" ,".tki":"application/x-tkined" ,".tkined":"application/x-tkined" ,".toc":"application/toc" ,".toy":"image/toy" ,".tr":"application/x-troff" ,".trk":"x-lml/x-gps" ,".trm":"application/x-msterminal" ,".tsi":"audio/tsplayer" ,".tsp":"application/dsptype" ,".tsv":"text/tab-separated-values" ,".ttf":"application/octet-stream" ,".ttz":"application/t-time" ,".txt":"text/plain" ,".uls":"text/iuls" ,".ult":"audio/x-mod" ,".ustar":"application/x-ustar" ,".uu":"application/x-uuencode" ,".uue":"application/x-uuencode" ,".vcd":"application/x-cdlink" ,".vcf":"text/x-vcard" ,".vdo":"video/vdo" ,".vib":"audio/vib" ,".viv":"video/vivo" ,".vivo":"video/vivo" ,".vmd":"application/vocaltec-media-desc" ,".vmf":"application/vocaltec-media-file" ,".vmi":"application/x-dreamcast-vms-info" ,".vms":"application/x-dreamcast-vms" ,".vox":"audio/voxware" ,".vqe":"audio/x-twinvq-plugin" ,".vqf":"audio/x-twinvq" ,".vql":"audio/x-twinvq" ,".vre":"x-world/x-vream" ,".vrml":"x-world/x-vrml" ,".vrt":"x-world/x-vrt" ,".vrw":"x-world/x-vream" ,".vts":"workbook/formulaone" ,".wav":"audio/x-wav" ,".wax":"audio/x-ms-wax" ,".wbmp":"image/vnd.wap.wbmp" ,".wcm":"application/vnd.ms-works" ,".wdb":"application/vnd.ms-works" ,".web":"application/vnd.xara" ,".wi":"image/wavelet" ,".wis":"application/x-InstallShield" ,".wks":"application/vnd.ms-works" ,".wm":"video/x-ms-wm" ,".wma":"audio/x-ms-wma" ,".wmd":"application/x-ms-wmd" ,".wmf":"application/x-msmetafile" ,".wml":"text/vnd.wap.wml" ,".wmlc":"application/vnd.wap.wmlc" ,".wmls":"text/vnd.wap.wmlscript" ,".wmlsc":"application/vnd.wap.wmlscriptc" ,".wmlscript":"text/vnd.wap.wmlscript" ,".wmv":"audio/x-ms-wmv" ,".wmx":"video/x-ms-wmx" ,".wmz":"application/x-ms-wmz" ,".wpng":"image/x-up-wpng" ,".wps":"application/vnd.ms-works" ,".wpt":"x-lml/x-gps" ,".wri":"application/x-mswrite" ,".wrl":"x-world/x-vrml" ,".wrz":"x-world/x-vrml" ,".ws":"text/vnd.wap.wmlscript" ,".wsc":"application/vnd.wap.wmlscriptc" ,".wv":"video/wavelet" ,".wvx":"video/x-ms-wvx" ,".wxl":"application/x-wxl" ,".x-gzip":"application/x-gzip" ,".xaf":"x-world/x-vrml" ,".xar":"application/vnd.xara" ,".xbm":"image/x-xbitmap" ,".xdm":"application/x-xdma" ,".xdma":"application/x-xdma" ,".xdw":"application/vnd.fujixerox.docuworks" ,".xht":"application/xhtml+xml" ,".xhtm":"application/xhtml+xml" ,".xhtml":"application/xhtml+xml" ,".xla":"application/vnd.ms-excel" ,".xlc":"application/vnd.ms-excel" ,".xll":"application/x-excel" ,".xlm":"application/vnd.ms-excel" ,".xls":"application/vnd.ms-excel" ,".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,".xlt":"application/vnd.ms-excel" ,".xlw":"application/vnd.ms-excel" ,".xm":"audio/x-mod" ,".xml":"text/plain",".xml":"application/xml",".xmz":"audio/x-mod" ,".xof":"x-world/x-vrml" ,".xpi":"application/x-xpinstall" ,".xpm":"image/x-xpixmap" ,".xsit":"text/xml" ,".xsl":"text/xml" ,".xul":"text/xul" ,".xwd":"image/x-xwindowdump" ,".xyz":"chemical/x-pdb" ,".yz1":"application/x-yz1" ,".z":"application/x-compress" ,".zac":"application/x-zaurus-zac" ,".zip":"application/zip" ,".json":"application/json"
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机智的ensemble

1 引言 本文主要结合了李宏毅的机器学习课程之Ensemble和周志华的《机器学习》西瓜书两者的说法,对ensemble这一竞赛利器做了总结。 Ensemble主要可以分为bagging和boosting两种方法。其中,bagging适用于基模型复杂度比较高的情况(如树模型…

Linux的sort命令

Linux的sort命令 Linux的sort命令就是一种对文件排序的工具,sort命令的功能十分强大,是Shell脚本编程时常使用的文件排序工具。 sort命令将输入文件看做由多条记录组成的数据流,而记录由可变宽度的字符串组成,以换行符作为定界符。…

delphi 调用php接口_爱站权重查询 API 接口请求调用

爱站权重查询 API 接口在网上已经很多且大都封装成了 API 供别人调用。支持前台跨域请求,以GET/POST方式提交即可。爱站权重查询 API 接口可以查询百度权重、搜狗等级、360权重、神马权重、谷歌等级等,你可以选择调用本站的接口,也可以利用本…

Express 路由、Ejs 、静态文件托管、中间件

一、 Express 简单介绍 Express 是一个基于 Node.js 平台,快速、开放、极简的 web 开发框架,它提供一系 列强大的特性,帮助你创建各种 Web 和移动设备应用。 Express 官网: 英语官网:http://expressjs.com/中文官网…

相邻位数字差值的绝对值不能超过_热点争议中技术问题,伺服控制有几个零点?对应真绝对值多圈编码器意义...

回归技术,把技术问题单独挑出来讲透,争要争个明白,看要看得明白。技术就能越辩越明。如果有“真”与“假”之争,沉默不去争,就是让“真的”受伤,让真心实干的人受伤。伺服控制有三个零点,对应三…

Chapter1-1_Speech_Recognition(Overview)

文章目录1 古人看语音辨识2 什么是语音辨识2.1 输出部分 - Token2.2 输入部分 - 声音信号特征3 数据集4 模型本文为李弘毅老师【Speech Recognition - Overview】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自…

[Swift]loadNibNamed方法

我们自定义UITableViewCell的时候,经常会创建一个xib文件。 (注意:选择创建文件要继承于cocoa touch class,而不是cocoa class,否则你是选不了创建xib的!!!) 然后我们可以…

Express Cookie 的基本使用

一、Cookie 简介 ● cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域 名的时候共享数据。 ● HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个…

Chapter1-2_Speech_Recognition(LAS)

文章目录1 内容简述2 模型详述2.1 ListenRNN Encoder1D-CNN EncoderSelf-attentinon EncoderDown Sampling2.2 Attend2.3 Spell2.4 Beam Search2.5 Training2.6 Back to Attention本文为李弘毅老师【Speech Recognition - Listen, Attend, Spell】的课程笔记,课程视…

智能车的转弯部分_江西智能搬运平板车铁路轨道运输车-厂家直销

本公司致力发展搬运设备,从公司成立至今一直在做电动平车的研发,从几十千克自动化物流车到成百上千吨都能自行研发制造,取得了优异的业内好评和广大消费者的肯定! BWP型无轨平板车是一种使用特殊的行走机构,能够在较小…

Express Session 的基本使用

一、 Session 简单介绍 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。 Cookie 数据存放在客户的浏览器上,Session 数据放在服务器上。Session 相比 Cookie 要 更安全一些。由于 Ses…

Chapter1-3_Speech_Recognition(CTC, RNN-T and more)

文章目录1 CTC2 RNN-T3 Neural Transducer4 Monotonic Chunkwise Attention5 小结本文为李弘毅老师【Speech Recognition - CTC, RNN-T and more】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的…

java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

项目简介:专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单…

Express 路由模块化以及 Express 应用程序生成器

一、 Express 路由模块化 https://expressjs.com/en/guide/routing.html Express 中允许我们通过 express.Router 创建模块化的、可挂载的路由处理程序。 1、新建一个 user.js 配置如下代码 var express require(express) var router express.Router() router.get(/, fun…

qscrollarea 设置滚动位置_爱剪辑:影视剧滚动字幕片尾,效果竟然如此高端精美...

大家好今天教大家制作滚动字幕片尾这种效果经常在影视剧和自媒体中看到不仅好看精美,而且还高大上快来学习吧~视频教程:爱剪辑:影视剧滚动字幕片尾教程https://www.zhihu.com/video/1174030334688632832移动视频的位置导入视频后&…

iOS 测试三方 KIF 的那些事

一: KIF 三方库的配置 今天的广州天气还不错,原本想试试UI测试的,前几天也了解到很多公司都在用 KIF 这这三方框架!!今天也就试着做做,可就跪在了这个安装上,我用cocopods 导入了 KIF&#xf…

Chapter1-4_Speech_Recognition(HMM)

文章目录1 HMM用在哪里2 HMM的state3 改造成DNN3.1 Tandem3.2 DNN-HMM Hybrid本文为李弘毅老师【Speech Recognition - HMM (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。其中也涉及到了部分李琳山老师关于HMM的详解&#…

Express 结合 multer 上传图片

一、 Multer 模块介绍 Multer 是一个 node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它主要用 于上传文件。 它是写在 busboy 之上非常高效。 注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。 https://www.npmjs.com…

ad19pcb设置恢复默认_条码打印机-斑马产品常用恢复出厂设置

当我们手上拿到条码打印机,遇到一下无法挽回的时候,我们可以选择恢复下出厂设置,这样使打印机还原到出厂,或许是很好的选择,接下来我们看下斑马条码打印机操作方法如下:Zebra 条码打印机恢复出厂1、有面板的…

Chapter1-5_Speech_Recognition(Alignment of HMM, CTC and RNN-T)

文章目录1 为什么需要Alignment2 穷举所有的alignment2.1 HMM的对齐2.2 CTC的对齐2.3 RNN-T的对齐3 小结本文为李弘毅老师【Speech Recognition - Alignment of HMM, CTC and RNN-T (optional)】的课程笔记,课程视频youtube地址,点这里👈(需翻…