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 的时候,我想要对他们进行问卷调查,并向他们显示实时更新的投票结果.鉴于此目的,我决定快速构建一个用于此目的的问卷调查应用程序.我想要一个简单的架构,不需要太多不同的 ...
随机推荐
- xml是什么,为什么要用xml
XML概念 众所周知,xml常用语数据存储和传输,文件后缀为 .xml: 它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言. 标记,指计算机所能理 ...
- powerdesigner逆向工程 oracle
我们已经有了数据库,希望使用powerdesigner工具生成pdm文件. 本文使用的版本是 15.0 1, File-->Reverse Engineer-->Database... ...
- Oracle_Sequence如何初始化开始值
Sequence的start with 值如何确定才能保证生成的主键不会冲突??? 我的项目中最开始数据库表主键的生成策略是 increment,但由于后来采用了集群部署的方式,出现了主键冲突的问题. ...
- LCA问题第二弹
LCA问题第二弹 上次用二分的方法给大家分享了对 LCA 问题的处理,各位应该还能回忆起来上次的方法是由子节点向根节点(自下而上)的处理,平时我们遇到的很多问题都是正向思维处理困难而逆向思维处理比较容 ...
- FoxOne---一个快速高效的BS框架--生成增删改查
FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...
- Vue.js 服务端渲染业务入门实践
作者:威威(沪江前端开发工程师) 本文原创,转载请注明作者及出处. 背景 最近, 产品同学一如往常笑嘻嘻的递来需求文档, 纵使内心万般拒绝, 身体倒是很诚实. 接过需求,好在需求不复杂, 简单构思 后 ...
- Java 制作证书的工具keytool用法总结
一.keytool的概念 keytool 是个密钥和证书管理工具.它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务.在 ...
- Angular4 后台管理系统搭建(9) - 用自定义angular指令,实现在服务端验证
最近这段时间发现,北京这用angular4 或 angular2的公司很少.几乎是没有.很担心自己是不是把精力放到了不应该的地方.白耽误了时间.但是随着我对新版angular框架理解的加深.个人感觉a ...
- cglib代理
简介: github地址:https://github.com/cglib/cglib,可以访问这个地址查看cglib源码和相关文档. 简单的摘录了wiki上关于cglib的描述: cglib is ...
- Dubbo服务接口的设计原则
1.接口粒度 1.1 服务接口尽可能大粒度,每个服务方法应代表一个功能,而不是某功能的一个步骤,否则将面临分布式事务问题,Dubbo暂未提供分布式事务支持.同时可以减少系统间的网络交互. 1.2 服务 ...