mongo+mongoose+express
直接上指令:
//*代表自定义名字
//使用数据库
use *
//检查当前数据库
db
//查询数据库列表
show dbs
//查询当前数据库集合
show collections
//插入文档自动创建集合
db.*.insert({'name':'jimmy'})
//删除集合
db.*.drop()
//查询文档
db.*.find()
//格式化显示结果
db.*.find().pretty()
//更改文档
db.*.update('','')
//替换文档
db.*.save({_id:ObjectId(),''})
//删除文档
db.*.remove('')
花了我一早上,整出来了。直接上代码:
var mongoose = require("mongoose");
//连接数据库
//mongod -dbpath "F:Data\db"
mongoose.connect("mongodb://localhost:27017/test");
//监听连接事件
var db = mongoose.connection;
//失败时的回调
db.on('error', console.error.bind(console, 'connection failed'));
//成功时的回调函数
db.once('open', function(callback) {
//生成表
var kittySchema = mongoose.Schema({
username: { type: String, required: true, unique: true },
});
//相当于原型方法吧
kittySchema.methods.speak = function() {
var greeting = this.name ? "Meow name is " + this.name :
"I don't have a name";
console.log(greeting);
};
//将表转换为模型 这里会自动加上s
var Kitten = mongoose.model('Kitten', kittySchema);
//加入数据
var fluffy = new Kitten({ name: 'fluffy' });
//这一步超级重要!!!!
//把数据存入数据库
fluffy.save(function(err, fluffy) {
if (err) {
return console.error(err);
}
});
//这一步主要展示数据
Kitten.find(function(err, kittens) {
if (err) {
return console.error(err);
}
console.log(kittens);
});
});
然后,这里是手动查询得到的结果:
哈哈哈哈,数据存储成功,可以开始搞事情了。
设计一个数据库接口,直接上代码。
var mongoose = require('mongoose');
mongoose.connect("mongodb://localhost:27017/teacher");
//监听连接事件
var db = mongoose.connection;
//失败时的回调
db.on('error', console.error.bind(console, 'connection failed'));
//生成表
var teacherSchema = mongoose.Schema({
name: { type: String, required: true, unique: true },
nickname: { type: String, required: true },
age: { type: Number, required: true },
sex: { type: String, required: true },
tel: { type: Number, required: true },
id: { type: Number, required: true, unique: true },
});
var t = mongoose.model('t', teacherSchema);
//添加数据
function add(obj) {
var data = new t({
name: obj.name,
nickname: obj.name,
age: obj.age,
sex: obj.sex,
tel: obj.tel,
id: obj.id
});
data.save((err, data) => {
if (err) {
return console.log(err);
}
});
}
//查询数据
function find() {
return t.find((err, data) => {
if (err) {
return console.log(err);
}
return data
});
}
//删除数据 暂未实现
function del() {
}
//暴露接口
module.exports = {
add: add,
find: find,
del: del
}
这是路由部分进行调用的代码:
var db = require('./database');
db.add({
'name': '赵玉川',
'nickname': '布头儿',
'age': 28,
'sex': '男',
'tel': '15901256171',
'id': 0
});
然后结果如下:
为什么要自动加上s呢??
mongo+mongoose+express的更多相关文章
- Mongo, Express, Angular, Node-- MEAN Stack搭建
前言 作为一个从后端转全栈的码农,我一直使用express,jade & bootstrap, jquery的组合.重复了几次相同的工作后,看到网上开始流行MEAN Stack,于是也对其研究 ...
- [js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist
promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习 ...
- node.js,express入门看详细篇
先最简单的代码 安装 npm install express app.js 代码内容 const express = require('express') const app = express() ...
- 【进击后端】ubuntu 快速安装node mongodb express
安装软件:node,mongo,express 1.apt install node 2.node -v 3.apt install mongodb 4.mongo -version 5.apt in ...
- MERN——MongoDB && React && Node && Express
原文链接:Let’s build a full stack MongoDB, React, Node and Express (MERN) app github源码地址:jelorivera08/re ...
- ExpressJS File Uploading – GridFS – MongoDB
n this blog post we will see how to handle multipart data/file uploading with expressjs. Save files ...
- 全 Javascript 的 Web 开发架构:MEAN
http://developer.51cto.com/art/201404/434759.htm 全 Javascript 的 Web 开发架构:MEAN 引言 最近在Angular社区的原型开发者间 ...
- 【转】全Javascript的Web开发架构:MEAN和Yeoman【译】
引言 最近在Angular社区的原型开发者间,一种全Javascript的开发架构MEAN正突然流行起来.其首字母分别代表的是:(M)ongoDB——noSQL的文档数据库,使用JSON风格来存储数据 ...
- node.js应用--转载
最近,在向大学生们介绍 HTML5 的时候,我想要对他们进行问卷调查,并向他们显示实时更新的投票结果.鉴于此目的,我决定快速构建一个用于此目的的问卷调查应用程序.我想要一个简单的架构,不需要太多不同的 ...
随机推荐
- mvc一对多模型表单的快速构建
功能需求描述 Q:在实际的开发中,经常会遇到一个模型中包含有多个条目的表单.如何将数据提交到后台? A: 以数组的形式提交到后台就Ok了(真的那么简单么,如果再嵌套一层呢?) A2:拆分多个模型,映射 ...
- oracle pl/sql 控制结构(分支,循环,控制)
一.pl/sql的进阶--控制结构在任何计算机语言(c,java,pascal)都有各种控制语句(条件语句,循环结构,顺序控制结构...),在pl/sql中也存在这样的控制结构.在本部分学习完成后,希 ...
- NOIP算法总结与复习
NOIP算法总结与复习 (看了看李总的蓝皮书,收获颇多,记下此文,以明志--) (一)数论 1.最大公约数,最小公倍数 2.筛法球素数 3.mod规律公式 4.排列组合数,错排 5.Catalan数 ...
- 第4章 同步控制 Synchronization ---哲学家进餐问题(The Dining Philosophers)
哲学家进餐问题是这样子的:好几位哲学家围绕着餐桌坐,每一位哲学家要么思考,要么等待,要么就吃饭.为了吃饭,哲学家必须拿起两支筷子(分放于左右两端).不幸的是,筷子的数量和哲学家相等,所以每支筷子必须由 ...
- load data(sql)
一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了.执行效率上可能就不太理想了.load data语句用于高速地从一个文本文件中读取数据,装载到一个表中,相比于 ...
- 在Ubuntu上安装arm-linux-gcc的问题
由于之前将Ubuntu的更新关掉了,所以导致我下载32位兼容包一直出错. 在arm-linux-gcc 安装之后,还不能编译程序的话,首先看自己的系统是多少位的,因为网上大部分的安装包都是32位的,所 ...
- 超级密码 hdu1226 bfs
超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- Drying poj3104(二分)
Drying Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7916 Accepted: 2006 Descriptio ...
- Mysql主从复制原理及配置
Mysql主从复制原理及配置 1.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其 ...
- webpack2使用ch5-多页面设置 内部js和引入js
1 当前目录 2 webpack.config.js 配置 const webpack = require('webpack'), htmlWebpackPlugin = require('html- ...