文章介绍:
- 1、node怎么连接mongodb数据库
- 2、前端怎么请求nodejs写的接口操作mongodb
- 3、关于NodeJs为什么要用mongoose操作mongodb
- 4、买了个据说是MONGOOSE的BMX,求辨别..
- 5、linux下安装完mongoose 之后用shell命令无法找到mongodb,提示我要用apt-
node怎么连接mongodb数据库
一、写在前面人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node/dist/v0.6.1/node-v0.6.1.msi 下载电脑适配的安装包(这个是windows的,买不起mac啊),然后根据引导安装就可以了,默认安装在C:\Program Files\nodejs文件下,并将该目录添加进PATH环境变量。具体做法,右击”我的电脑“-”属性“-“系统高级”-”高级“-”环境变量“-选择“变量名:PATH”;“改变量值:在最后面添加【C:\Program Files\nodejs】(根据自己的安装目录而定)”。打开cmd直接运行命令:node -v 可以输出当前版本号。node文件里已经集成了npm,之后使用npm install XXX 来安装需要的插件或者模块。 三、使用express框架忙活了一阵,终于可用npm命令进行初始化、安装express框架,然后写个hello world 爽一下了。为什么要选择express框架了,当然有它的特别之处,对新手来说最怕的就是麻烦还容易出错。express当然为我们考虑到了,所以提供了快速生成器:express-generator1、通过命令:npm install express-generator -g 安装到全局2、在用express 命令生成项目结构express myapp 其中的myapp是你的项目名称3、通过cd myapp 进入项目文件中通过npm install 初始化依赖模块通过set DEBUG=myapp npm start 启动web服务器4、在浏览器中打开 localhost:3000/ 网址就可以看到这个应用了。默认情况下用的模版引擎是jade,项目里也已经配置好了这个模版。 四、介绍express 生成器的项目1、myapp项目的机构如下:2、package.json 这个可以说是模块管理包,项目信息和模块的版本号,其实你会发现在项目模块初始化的时候就是由这里的配置去查找生成的。3、app.js 是项目的启动文件,可以说是项目的核心。主要写一些公共的功能。4、bin 文件下有个无后缀的www文件,这是项目的入口文件,配置web服务端口和一些监听事件。5、node_modules是项目的依赖的的文件模块,之后导入的包也会被放在其中,比如连接数据库的mongoose模块,后面会详细讲。6、public 是项目的静态资源文件集,很容易看出图片、css文件、js文件都放在这里。7、routes 是项目的路由模块,其中已经默认了index.js和user.js文件。在这里其实也包括一般后台语言中的控制器内容,当然在大的项目上是可以分离开来的。8、views是项目的模版文件,是jade模版引擎,这个模版很简洁,但是坑也比较多,比如对空格的要求都非常严格,多一个少一个空格都会报错的,曾经踩过很多坑,其实它的性能也不是很高还不如用ejs呢。 五、安装mongoDB1、同样在官网(/downloads)上直接下载msi文件2、简单的下一步进行安装,有默认的就让其默认,有选择的就全选了3、然后配置环境变量,和node的一样不再累述,不过可以放中图,哈哈哈……4、接下来是启动mongoDB服务5、通过命令:mongod --dbpath f:\MongoDB\data 其中 f:\MongoDB\data是文件存放路径,看到如下信息说明成功了6、MongoDB监听的是27017端口,同时打开浏览器输入127.0.0.1:27017,则会看到如下提示:It looks like you are trying to access MongoDB over HTTP on the native driver port.7、然后,再打开一个cmd,输入mongo命令链接数据库,出现如下提示:2015-05-02T17:10:19.467+0800 I CONTROL Hotfix KB2731284 or later update is not installed, will zero-out data files MongoDB shell version: 3.0.2 connecting to: test8、这样windows环境下的monogDB就安装成功了。补充:9、如果你嫌每次用命令打开服务麻烦的话,可以写成批处理文件,就是新建一个后缀.bat的文件,写上如下代码:start mongod --dbpath F:\MongoDB\data10、当然了,你也可以将MongoDB以服务的方式启动,不过我觉得在学习的过程中用处不大,小伙伴们可以自己尝试一下,如果有需要的话,我在后面会补上。11、要是觉得命令行不好用,推荐一个带图形化界面的软件:MongoVUE,就和navicat差不多,它有免费版的,就是功能少点,但学习过程中完全足够了六、在node项目中使用monogDB1、导入monogDB连接模块,express 官方介绍的是mongoskin模块,这个我就不说了,这里介绍通过mongoose安装2、在myapp项目下执行命令 npm install mongoose -save 安装保存到node_modules,也可以在package.json中配置"mongoose": "^4.4.12",然后命令npm install 安装。3、在app.js文件中 a、导入mongoose模块: var mongoose = require('mongoose');b、创建数据库连接mongoose.connect('mongodb://localhost/myDB') //连接本地数据库4、在项目根目录下新建文件夹schemas,这个是数据集模块,在模块下新建users.js文件var mongoose = require('mongoose'); //申明一个mongoons对象 var UsersSchema = new mongoose.Schema({ name: String, paw: String, meta: { createAt: { type: Date, default: Date.now() }, updateAt: { type: Date, default: Date.now() } } }) //每次执行都会调用,时间更新操作 UsersSchema.pre('save', function(next) { if(this.isNew) { this.meta.createAt = this.meta.updateAt = Date.now(); }else { this.meta.updateAt = Date.now(); } next(); }) //查询的静态方法 UsersSchema.statics = { fetch: function(cb) { //查询所有数据 return this .find() .sort('meta.updateAt') //排序 .exec(cb) //回调 }, findById: function(id, cb) { //根据id查询单条数据 return this .findOne({_id: id}) .exec(cb) } } //暴露出去的方法 module.exports = UsersSchema 5、在根目录新增modules文件,这个是数据模型模块,在模块下新增users.js文件var mongoose = require('mongoose') var UsersSchema = require('../schemas/users') //拿到导出的数据集模块 var Users = mongoose.model('Users', UsersSchema) // 编译生成Movie 模型 module.exports = Users 6、在routes文件中的users.js文件中添加路由控制器代码var express = require('express'); var mongoose = require('mongoose');//导入mongoose模块 var Users = require('../models/users');//导入模型数据模块 var router = express.Router(); /* GET users listing. */ router.get('/', function(req, res, next) { res.send('respond with a resource'); }); //查询所有用户数据 router.get('/users', function(req, res, next) { Users.fetch(function(err, users) { if(err) { console.log(err); } res.render('users',{title: '用户列表', users: users}) //这里也可以json的格式直接返回数据res.json({data: users}); }) }) module.exports = router; 7、在views文件下新增users.jadeextends layout block content h1= title //jade取值方式 ul each user in users //jade模版的遍历方式 li h4 #{user.name} span #{user.paw} 8、最后在浏览器中打开网址:localhost:3000/users/users,查看效果。到这里一个从数据库到前端展现的项目就完成了。以上就是本文的全部内容,希望对大家的学习有所帮助。
前端怎么请求nodejs写的接口操作mongodb
首先要配置下载,下载 node,输入node -v 能看到版本号就算是安装好了node,我的版本是v4.4.3,也是一个老的版本了。
然后是mongodb的下载。直接去官网下载就好了。,有各种版本选择
下载好了后 一直确定和默认安装就好了。
安装好了就能看到路径了。C:\Program Files\MongoDB\Server\3.2\bin ,我的电脑默认的是这个路径,在这个路径下的文件了就包含了服务端mongod.exe,服务端mongo.exe.
回车运行。
在运行客户端
回车运行可以看到。
然后show dbs 可以看到现有的默认创建的local和 test。
这个时候mongodb数据库就算是模拟的好了。然后就是编辑nodejs代码来链接到mongodb数据库了。
npm install mongodb
1 var mongo = require('mongodb'), 2 Server = mongo.Server, 3 Db = mongo.Db; 4 5 var server = new Server('localhost', 27017, {auto_reconnect: true}); 6 var db = new Db('foo', server); 7 8 db.open(function(err, db) { 9 if(!err) {10 console.log("We are connected");11 }12 });
使用node 解释器运行node代码。
能看到输出 we are connected
从服务端能看到了下面输出就说明连接成功了。
两个连接已经打开。
还有就是通过 mongoose 模块连接。
npm install mongoose
nodejs 代码如下。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test'); //连接到一个test的数据库
在服务器端也可以看到一个连接正在打开。好了,nodejs 的初次连接就到这了。其中还是有很多坑要自己去解决。。。
关于NodeJs为什么要用mongoose操作mongodb
node.js操作mongodb提供了多种驱动,包含mongoose,mongoskin,node-mongodb-native(官方)等。
mongoose官网上作者的解释:
Let's face it, writing MongoDB validation, casting and business logic boilerplate is a drag. That's why we wrote Mongoose.
Mongoose provides a straight-forward, schema-based solution to model your application data. It includes built-in type casting, validation, query building, business logic hooks and more, out of the box.
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用
买了个据说是MONGOOSE的BMX,求辨别..
我店在2006年--07年是销售过MONGOOSE的车,当时也是列入官网浙江区正规代理经销商。您的问题我可以做以下推断,但必须要看过车的图片才能定论。
1、MONGOOSE的车型分中国和台湾省两地生产,其代工厂有不同,所以车架标号也不同。品质也是由于进口线和国产线不同而有很大区别。其实一般来说,2500零售价以下的,基本都是在中国内地生产。
2、不是所有MONGOOSE的车都有车架前三角上管的标,但一般来说都有车头管上的LOGO。除非是工厂处理库存品,故意去掉头标。
3、除头管外,还可以注意下是否在尾叉处有LOGO标,大部分都有标的。
4、由于您提供的信息过于模糊,真的不可以妄下评论。建议还是给我看下图。QQ:3352228.
linux下安装完mongoose 之后用shell命令无法找到mongodb,提示我要用apt-
为解决频繁的数据插入和更新问题(这些数据的可靠性要求不高,不需要事务),赶上NoMysql的热潮,选择目前最热门的Mongodb,在测试中充分感受到mongodb安装的简单性和客户端调用API的便捷。但在生产环境下(操作系统CentOS6.2,内存64G,CPU12核),却出现频繁的宕机,有时候一天就要宕2次,虽然设置了replicasets,却很容易挂掉2台,导致不可用。查看mongod.log,发现每次宕机时都会打印Gotsignal:11(Segmentationfault),但从这个查找不到能够解决问题的资料。有人认为mongodb频繁宕机大多数是因为在并发查询的压力下,因为热数据没有在内存中,被迫到文件系统读取数据,很容易出现timeout的问题,之后会造成进程锁死,经过验证,如果把查询(只有通过主键查一条记录的查询)的客户端关闭掉,宕机的概率小非常多。查看每台mongodb的内存(通过mongodb命令控制台的db.serverStatus()看“mem”部分的“resident”),发现mongodb热数据的内存只占用不到2G,而数据文件有近200G,可能也是因为频繁的宕机,导致热数据一直未全部加载。但还是会出现宕机,为了不需要人工重启,就在每个replica的服务器上用LinuxShell脚本写了一段每隔1分钟检测mongodb进程死掉自动重启的进程,虽然能够解决mongodb一直在运行的状态,但发现mongodb的collections中出现很多损坏的数据,甚至出现一些自动创建的异常collections,如一个collections的名称是“jingdong”,则会出现多个“ingdong”、"jing"、“jingdon”之类的collections。不得已只好把mongodb的定时检测启动脚本关闭掉,顺着这个现象找问题,终于在mongodb官网的JIRA看到有个用户反馈的现象跟我们完全一致,最后他解决的方法是把mongodb客户端的java驱动jar包由2.9.1回退至2.8.0,我们也按照这样处理后,果然不会再出现crash问题。
发布于 2022-07-31 17:46:57 回复
发布于 2022-08-01 01:40:48 回复