为什么dex优化验证失败败,跪求失败的可能性

Mongoose是一个提供了MongoDB地相映射的Node.js库,它在Node.js中与ORM(Object Relational Mapping)有着类似的接口。如果你不熟悉ORM或者Mongoose中的Object Data Mapping(ODM),意思是Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用。我们现在就来看看怎样是使用Mongoose来创建并存储数据。
注意:使用Mongoose的前提是你已经安装了Node.js和MongoDB。运行下面的例子首先需要启动MongoDB。
连接到MongoDB
在本文中,我们将连接到MongoDB的test数据库。我们也要确保任何发生的错误都被打印到控制台中。注意open事件的使用 – 当你创建一个模式以及编译模型时该事件发生。
var mongoose = require("mongoose");
var db = mongoose.
db.on('error',console.error);
db.once('open',function(){
//在这里创建你的模式和模型
mongoose.connect('mongodb://localhost/test');
模式和模型
在一开始,我们需要一个模式和一个模型来将数据永久的保存在MongoDB数据库中。模式定义了一个集合中文档的结构,模型被用来创建将要存储在文档中的数据实例。我们将会创建一个电影数据库来保持追踪看看哪一步电影拥有credit cookies。我们先来创建一个电影的模式和模型:
var movieSchema = new mongoose.Schema({
title: {type: String},
rating: String,
releaseYear: Number,
hasCreditCookie: Boolean
//使用movieSchema作为结构编译一个'Movie'模型
//Mongoose同时也会创建一个叫做'Movie'的MongoDB集合用来存放这些文档
注意到Movie模型是首字母大写的,这是因为当一个模型被编译时,结果是一个用来创建实例的构造函数。从模型构造函数创建的实例都是即将保存在Mongo中的文档。
创建,提取,更新和删除(CRUD)
创建一个新的电影文档非常的轻松,因为你已经定义了模型,只需要实例化一个Movie模型即可。更新和存储也同样简单,进行更改然后调用你的文档中的save函数。
var thor = new Movie({
title: 'Thor',
rating: 'PG-13',
releaseYear: '2011',
//注意我们在这里使用一个字符串而不是一个数字 -- Mongoose会为我们自动转换
hasCreditCookie: true
thor.save(function(err,thor){
if(err) return console.log(err);
console.dir(thor);
save函数将会提供最新创建的文档,你可以在控制台中看到结果:
"title": "Thor",
"rating": "PG-13",
"releaseYear": 2011,
"hasCreditCookie": true,
"_id": "519a979e918d4d",
从已有的文档中提取数据需要用一种不同的方法。你可以依据模式的任何属性来查找文档并且找到任何数量的文档 – 使用findOne来将结果范围缩小到一个文档。
//通过名字查找一部电影
Movie.findOne({title: 'Thor'},function(err,thor){
if(err) return console.err(err);
console.dir(thor);
//查找所有电影
Movie.find(function(err,movies){
if(err) return console.err(err);
console.dir(movies);
//查找所有具有一个credit cookie的电影
Movie.find({hasCreditCookie: true}, function(err,movies){
if(err) return console.error(err);
console.dir(movies);
Mongoose也允许你轻松的创建静态辅助函数来查找数据:
movieSchema.statics.findAllWithCreditCookies = function(callback){
return this.find({ hasCreditCookie: true}, callback);
//只用这个副主函数作为编译的Movie模型的一个静态函数
Movie.findAllWithCreditCookies(function(err,movies){
if(err) return console.error(err);
console.dir(movies);
Mongoose使MongoDB中的CRUD操作变得异常的简单。同Express一起,你可以创造出令人惊讶的web应用。
本文译自getting started with mongoose,原文地址
如果你觉得本文对你有帮助,请点击下面链接为我提供赞助
本站专栏文章皆为原创,转载请注明出处(带有 前端乱炖 字样)和本文的显式链接(),本站和作者保留随时要求删除文章的权利!
添加了一枚【评注】:Test for Mark2
添加了一枚【评注】:ORM [Test For Mark]
在定义 Schema 的时候,title: String 和 title: {type: String} 有什么区别?
支持一下,modulus也是我现在在用的托管网站
@张小俊128 嗯,3Q哈,圣诞快乐
@铭是哪个铭 这样理解,mongoose.model()方法中的movie是用在mongoDB中的,因为你mongoose无论怎样操作,最终结果都要反映在mongoDB中,这里的指定的movie其实是在mongoDB中创建了一个叫做movies(这里注意会变为复数)的集合,这就是指定’movie’参数的意义。可以这样理解,movie用在mongoDB中,而movieModel则是用在JavaScript中。一般来说callback中都需要有一个err参数,其他的参数可以根据自己的情况来自行选择,但是一般涉及到查询的话都会返回一个结果所以一般为err和data两个。
当把schema发布为model时,例如 var movieModel = mongoose.model(’movie’,movieSchema);时,为什么要指定一个参数’movie’?然后在callback函数中如何确定函数中的参数个数?(是必定有error,data,或者可以自行增加参数?这样的话如何知道哪个参数是代表什么意思?)
WRITTEN BY
PUBLISHED IN
本专栏其他文章
浏览:9448赞:0
浏览:15250赞:04259人阅读
node.js(14)
express4.0使用mongoose连接mongodb
1.首先需要安装mongodb,这里只讨论windows下mongodb的安装,方法如下:
一.MongoDB数据库的安装
1.到官网www.mongo.org上下载相应的版本
2.在D盘根目录建一个MongoDB的文件夹放解压出来的文件,这些文件目录结构如下
GNU-AGPL-3.0
THIRD-PARTY-NOTICES
3.在D盘根目录在建一个MongoDBData文件夹用于存放db文件
4.cmd--&切换到--&D:\MongoDB\bin&
5.执行脚本mongod.exe --dbpath D:\MongoDBData
6.配置系统环境变量,把;D:\MongoDB\配置到系统PATH目录中,我个人同时也在当前用户的PATH中配置这样的变量
7.cmd--&执行mongod -help出现一推参数,就说明MongoDB配置成功了,这个时候就可以在cmd控制台使用MongoDB的shell命令
二.启动数据库服务
1.在D盘根目录建一个MongoDBStart的文件夹,在该文件夹下新建一个MongoDB.bat的文件
2.里面这样写 mongod --dbpath D:\MongoDBData
后面这个路径(D:\MongoDBData),就是db文件存放的路径
3.双击该MongoDB.bat文件就可以启动MongoDB了,它这时候监听的端口号为:28017,注意:默认端口是一般是用于web访问的端口
三.各项参数的说明
1.可以cmd--&mongod -help查看
2.首先创建一个express的web项目,使用ejs模板引擎,
cd 到你想放工程的文件夹 执行express -e ejs xxx //xxx代表工程名
接下来需要该工程中安装mongoose
第一种方式:cd 到工程目录 npm install --save mongoose //安装完mongoose,会自动把包信息添加到package.json中
第二种范式:如果使用的是webstorm8.0.2 可以这样做:View--&Tool Windows--&Terminal 在Terminal终端中执行 npm install --save mongoose
3.接下来我们完成mongoose连接mongoDB数据库
在工程根目录下新建一个文件,config.js,写入如下内容
//TaskManager是数据库的名字
module.exports = {
&mongodb&: &mongodb://localhost/TaskManager&,
&database&: &TaskManager&,
&server&: &localhost&
接下来,在app.js中进行一点配置,在var app = express();下面加入如下代码:
//引入mongoose模块
var mongoose = require('mongoose');
//引入自定义的数据库配置模块
var config = require('./config');
//创建数据库连接,参数是从config配置文件的json对象中获取的连接信息,即mongodb://localhost/TaskManager
mongoose.connect(config.db.mongodb);
4.到D:/MongoDBStart,双击MongoDB.bat启动mongoDB数据库
5.npm start //启动工程,此时在MongoDB.bat的终端上我们已经可以看到连接信息了
至此,我们已经完成了使用mongoose连接mongoDB
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:111347次
积分:2277
积分:2277
排名:第14442名
原创:114篇
转载:25篇
评论:14条
(1)(2)(1)(1)(4)(6)(4)(5)(1)(5)(1)(2)(4)(5)(1)(1)(1)(5)(1)(5)(2)(10)(6)(5)(12)(18)(7)(10)(12)(2)(1)nodejs+express+mongodb简单的例子
我的图书馆
nodejs+express+mongodb简单的例子
简单的介绍下node+express+mongodb这三个东西。node:是运行在服务器端的程序语言,表面上看过去就是javascript一样的东西,但是呢,确实就是服务器语言,个人觉得在一定层次上比c灵活,java就不提了。反正你只要认为node可以干很多事就行了,绝对不只是web开发。express:这货呢,就是node的一种框架,node有很多的开源框架,express是一个大神开发的(这尊神已经移驾到go语言的开发去了)。express可以让你更方便的操作node(因为原生的node写起来比较麻烦,而且因为node是事件驱动的,所以有很多异步回调,写多了就看着晕...)mongodb:这是一种非关系数据库(nosql),太深的东西我也不清楚,反正这货也有很强大的地方,缺点就是不适合数据一致性要求高的比如金融方面的开发。但是优点就快。总结:也就是说node和mongodb组合起来特别适合一个应用场景——速度快,处理量大的情况。下面先说说准备工作:(以windows8.1系统环境为例)1.node:先下载安装nodejs,下载地址,安装好了之后检查是否在系统环境变量里自动配置好了path,如果没有,请把node的安装地址配置到path里去。然后在cmd里敲入node,如果可以,那么这一步ok了,很简单吧。2.express:这个安装分两种,一种是全局安装,一种是本地安装。网络上说的玄乎玄乎的,但是实际操作中你会发现不同的系统环境会出现问题,比如win8.1中文用户名情况下,你得改变npm的全局路径(npm是node模块包管理程序,在你安装好node的时候已经自带npm了),操作:prefix = 自定义模块目录cache = 自定义缓存目录接着安装express(新版本4.X以上要安装express-generator)npm i -g express(旧版本npm i -g express+版本号)npm i -g express-generator(如果想本地安装在和npm同一个目录下,先cd到node_modules目录,再使用npm i express-generator命令,然后再将node_modules目录下的./bin配置到环境变量path里去)测试:express -V 成功的话会显示版本号3.mongodb:这个数据库安装很简单,下载地址。安装好了,就在cmd里cd到mongodb安装目录下的bin目录,然后敲命令:mongod --dbpath="mongodb安装目录\data" --logpath="mongodb安装目录\log\log.txt" --install --serviceName MongoDB --serviceDisplayName MongoDB操作完,你会发现,你的电脑的服务里多了一个MongoDB服务,没错,就是它,然后你运行这个服务就行了。正题:搭建简单的node+express+mongodb项目先在cmd控制台里cd到一个目录下面,记住这你的workspace,然后是用是用express创建一个app项目express hello-world -e&(-e表示支持ejs模板引擎,默认是jaden。什么事模板引擎,比如jsp...太深的我也不懂。本人比较擅长html原生的东西,像这种模板引擎我也是第一次使用,也蛮方便的哦,不过在我看来,没啥用, 我不需要,但是可能你需要...)然后我们再下载依赖包npm i&(这样就会自动将项目需要的依赖modules安装到项目的modules里去了)我们cd到hello-world目录下,是用命令npm start&启动项目(也可以是node ./bin/www,旧版本直接node app.js,因为具体要看package.json里的启动配置了)我们可以在浏览器地址栏里敲入&&这就是你的第一个express创建的node app。是不是很哈皮。。。我们研究下express创建项目你需要了解的项目主要目录为:routes和views,你最好再在项目里新建一个目录叫models(作用后面讲)routes里index.js配置的都是get和post请求的路径映射关系,很简单的哦。views里index.ejs就相当于一个html文件,里面就是一些html标签和&%%&标签,感觉和jsp差不多哦。看起来不错的样子,标准的MVC框架(models里放模型,views里面放展示,routes里面放控制)上面我们已经生成好了app原型,接着我们设计数据库cmd命令行里:mongo&//进入数据库use hello-world&//创建项目数据库db.addUser("shuaige", "123456")&//给这个数据库创建了一个叫帅哥的账号,密码123456 (但是我觉得可能我理解的不到位,你也可以不做这个操作)然后,我们就为这个hello-world数据库创建collection(collection就相当于oracle和mysql里的table)db.createCollection("users")&//创建一个集合,也就是表db.users.insert({userid: "admin", password: "123456"})&//给users里添加一个文档,也就是一条记录账号admin,密码123456ok,现在检查一下:db.users.find()&//如果看到你刚刚添加的文档记录,就ok咯好简单的数据库集合以及文档设置好,我们就回到express创建的node项目里,我们需要: &&在models下创建一个user.js,作为实体类映射数据库的users集合&在views下做几个页面(可以用ejs也可以用html,我就用ejs吧)在routes下的index.js配置路由,也就是请求映射处理1在models下创建一个user.js,作为实体类映射数据库的users集合&user.js1234567var&mongoose&=&require("mongoose");& var&Schema&=&mongoose.S&&& var&userScheMa&=&new&Schema({&&&&userid:&String,&&&&password:&String}); exports.user&=&mongoose.model('users',&userScheMa);&2在views下面建index.ejs, errors.ejs, login.ejs, logout.ejs, homepage.ejs。&(index是自带的,不用建)index.ejs&123456789101112&!DOCTYPE&html&&html&&&&head&&&&&&title&&%=&title&%&&/title&&&&&&link&rel='stylesheet'&href='/stylesheets/style.css'&/&&&&/head&&&&body&&&&&&h1&Hello&World&/h1&&&&&&p&Welcome&to&&%=&title&%&&/p&&&&&&p&&a&href="login"&登陆&/a&&/p&&&&/body&&/html&login.ejs123456789101112131415161718192021222324&!DOCTYPE&html&&html&&&&head&&&&&&title&&%=&title&%&&/title&&&&&&link&rel='stylesheet'&href='/stylesheets/style.css'&/&&&&/head&&&&body&&&&&&h1&Hello&World&/h1&&&&&&p&Welcome&to&&%=&title&%&&/p&&&&&&form&action="homepage"&method="post"&&&&&&&&&&p&&&&&&&&&&&& &span&userId:&/span&&&&&&&&&&&& &br&&&&&&&&&&&& &input&id="userid"&name="userid"&type="text"&&&&&&&&&&/p&&&&&&&&&&p&&&&&&&&&&&& &span&password:&/span&&&&&&&&&&&& &br&&&&&&&&&&&& &input&id="password"&name="password"&type="password"&&&&&&&&&&/p&&&&&&&&&&p&&input&type="submit"&value="submit"&&/p&&&&&&/form&&&&/body&&/html&logout.ejs&1234567891011121314151617&!DOCTYPE&html&&html&&&&head&&&&&&title&&%=&title&%&&/title&&&&&&link&rel='stylesheet'&href='/stylesheets/style.css'&/&&&&/head&&&&body&&&&&&h1&Hello&World&/h1&&&&&&p&Welcome&to&&%=&title&%&&/p&&&&&&p&正在登出...&/p&&&&&&script&type="text/javascript"&&&&&&&&&setTimeout(function(){&&&&&&&&&&&&window.location.href&=&"/";&&&&&&&&},&500);&&&&&/script&&&&/body&&/html&homepage.ejs&123456789101112&!DOCTYPE&html&&html&&&&head&&&&&&title&&%=&title&%&&/title&&&&&&link&rel='stylesheet'&href='/stylesheets/style.css'&/&&&&/head&&&&body&&&&&&h1&Hello&World&/h1&&&&&&p&Welcome&to&&%=&title&%&&/p&&&&&&p&&a&href="logout"&登出&/a&&/p&&&&/body&&/html&error.ejs 出错页面,我没做,你有兴趣可以自己试试玩玩。&3 在routes下的index.js配置路由,也就是请求映射处理index.js1234567891011121314151617181920212223242526272829303132333435363738var&express&=&require('express');var&router&=&express.Router();var&mongoose&=&require('mongoose');var&user&=&require('../models/user').mongoose.connect('mongodb://localhost/hello-world');&router.get('/',&function(req,&res)&{&&&&&&res.render('index',&{&title:&'index'&});});&router.get('/login',&function(req,&res)&{&&&&res.render('login',&{&title:&'login'&});});&router.get('/logout',&function(req,&res)&{&&&&&&res.render('logout',&{&title:&'logout'&});});&router.post('/homepage',&function(req,&res)&{&&&&var&query_doc&=&{userid:&req.body.userid,&password:&req.body.password};&&&&(function(){&&&&&&&&user.count(query_doc,&function(err,&doc){&&&&&&&&&&&&if(doc&==&1){&&&&&&&&&&&&&&&&console.log(query_doc.userid&+&":&login&success&in&"&+&new&Date());&&&&&&&&&&&&&&&&res.render('homepage',&{&title:&'homepage'&});&&&&&&&&&&&&}else{&&&&&&&&&&&&&&&&console.log(query_doc.userid&+&":&login&failed&in&"&+&new&Date());&&&&&&&&&&&&&&&&res.redirect('/');&&&&&&&&&&&&}&&&&&&&&});&&&&})(query_doc);});&module.exports&=&ok,基本上大功告成,可以试试咯。下面讲讲如何调试服务器端的代码:我们最好借助一个叫node-inspector的工具包npm i -g node-inspector //安装node-inspector然后在cmd里运行node-inspector再新打开一个cmd,cd到项目hello-world目录下node --debug ./bin/www (或者&node --debug-brk ./bin/www , 旧版本express创建的node程序请使用 node --debug app.js)在浏览器里打开http://127.0.0.1:8080/debug?port=5858再新建窗口打开http://127.0.0.1:3000/就在浏览器可以调试服务器端代码。
TA的最新馆藏

我要回帖

更多关于 游戏启动优化失败 的文章

 

随机推荐