美文网首页
Node.js 数据库开发

Node.js 数据库开发

作者: 独木舟的木 | 来源:发表于2018-10-12 15:42 被阅读26次

MongoDB 数据库

MongoDB 数据库结构
  • mongoose 中的一切由 schema 开始。 schema 是一种以文件形式存储的数据库模型骨架,并不具备数据库的操作能力。
  • Schema 定义了 model 中的所有属性,而 model 则是对应一个 MongoDB 中的 collection
  • Schema 生成 ModelModel 创造 EntityModelEntity 都可对数据库操作造成影响,但 ModelEntity 更具操作性。

使用 mongoose 连接 MongoDB

连接数据库,实现增、删、改、查操作:

'use strict';

// 引入 mongoose 模块
const mongoose = require('mongoose');

// 定义数据库地址
// uri:mongodb://user:pass@localhost:port/database
const uri = 'mongodb://user:pass@localhost:port/database?authSource=admin';

// 连接 mongoDB 数据库
mongoose.connect(uri, {useNewUrlParser: true});
const db = mongoose.connection;

// 将连接绑定到错误事件
db.on('error', console.error.bind(console, 'MongoDB connection error'));

db.once('open', function() {
    console.log('一次打开记录');
});

// 定义 Schema
const Schema = mongoose.Schema;
// 使用 Schema 构造函数,创建一个新的 Schema 实例
// 实例化 mongoose.Schema 对象并定义 Model 的属性
const ArticleScheme = new Schema({
    title: String,
    author: String,
    content: String,
    publishTime: Date
});

// 将 Schema 注册成 Model
mongoose.model('Article', ArticleScheme);
// 如果 Model成功注册,就可以通过如下方式访问模型
const ArticleModel = mongoose.model('Article');

// 通过 Model 定义 Entity
var ArticleEntity = new ArticleModel({
    title: 'node.js',
    author: 'node',
    content: 'node.js is great!',
    publishTime: new Date()
});

// 【将文档插入到集合中】
ArticleEntity.save(function(err) {
    if (err) {
        console.log('save failed ' + err);
    }else {
        console.log('save successed');
    }
});

// 【查询】
// find() 方法,查询所有符合要求的数据
// findOne() 方法,查询符号要求的第一条数据
ArticleModel.find({title:'node.js'}, function(err, docs) {
    if (err) {
        console.log('error');
        return;
    }
    console.log('result: ' + docs); // 打印实体
    
    // 【查询纪录后,修改记录的值】
    docs[0].title = 'javascript'; // 修改数据
    docs[0].save(); // 保存修改后的数据

    // 【删除数据】
    if (docs) {
        // 遍历文档,逐条删除
        docs.forEach(function(ele) {
            // 只有单个文档可以使用 remove() 方法
            ele.remove();
        })
    }
})




可以将 Model 提取成单独的一个类:

article.js

'use strict';

// 导入 mongoo 模块
const mongoose = require('mongoose');

// 定义 Schema
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId; // 主键

const ArticleSchema = new Schema({
    id: ObjectId,
    title: {type: String, required: true, max: 100},
    name: {type: String, required: true, max: 100},
    date: {type: date}
});

// 导出模型
module.exports = mongoose.model('Article', ArticleSchema);

常见错误

常见错误:连接 MongdDB 数据库时提示字符串参数失效

示例代码“

// 连接 mongoDB 数据库
mongoose.connect(uri, function(err) {
    if (err) {
        console.log('connect failed' + err);
        return;
    }
    console.log('connect success');
});

错误提示内容:

DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect.

解决方法:连接时传递参数:

// 连接 mongoDB 数据库
mongoose.connect(uri, {useNewUrlParser: true});
const db = mongoose.connection;
// 将连接绑定到错误事件
db.on('error', console.error.bind(console, 'MongoDB connection error'));

常见错误:连接 MongoDB 数据库时授权失败,提示:errmsg: 'Authentication failed.', code: 18

// uri 后面添加 authDatabase 参数
mongoose.connect('mongodb://user:password@host:port/dbname?authSource=admin')

解决参考:Authentication in mongoose using SCRAM-SHA-1

相关文章

  • node.js笔记

    node.js 介绍 node.js是什么 node.js 是一个开发平台,就像java开发平台...何为开发平台...

  • 2022年都在用哪些Node.js ORM框架?

    如果没有接触过 Node.js 或其他后端开发语言开发的与数据库交互的应用程序,可能对这个 ORM 框架有点迷糊,...

  • Web框架Node.js Koa2 入门需要学什么?

    Web框架Node.js Koa2 入门需要学什么?前端开发需要掌握JS高级应用、异步编程、数据库Sequeliz...

  • Node.js 数据库开发

    MongoDB 数据库 mongoose 中的一切由 schema 开始。 schema 是一种以文件形式存储的数...

  • 12_Node.js Web 开发

    下面开始用 Node.js 进行 Web 开发。 我是通过《Node.js开发指南》这本书来学习 Node.js ...

  • nodejs的运行机制

    遇到的问题 在使用Node.js开发应用平台时,有个需求:先从数据库查询参数,将其转换为配置定义对象(Defini...

  • Node.js的读书笔记

    书单阅读:《Node.js开发指南》《Node.js入门经典》《Node与Express开发》《Node即学即用....

  • XDL_NO.8 Node.js 操作MongoDB数据库

    Node.js 操作MongoDB数据库 安装组件 mongodb Node.js 官方对MongoDB的驱动mo...

  • nodeJs

    node.js 搭建服务 数据库常用操作 node操作数据库 案例

  • 一个Javascript全栈开发:Node+MongoDB+An

    本文算是本人第一次完成一个全栈式开发,后端基于Node.js,数据库基于MongoDB,前端主要基于Angular...

网友评论

      本文标题:Node.js 数据库开发

      本文链接:https://www.haomeiwen.com/subject/pwdgaftx.html