Mongodb 数据库前面已经安装过了。
创建一个 imooc_lego_course 数据库,一个 work collection。

点击 create 完成创建。

安装
npm i mongoose -S添加 mongodb 的配置文件
module.exports = {
// mongodb 连接配置
mongodbConf: {
host: 'localhost',
port: '27017',
dbName: 'imooc_lego_course',
},
}封装 mongoose ,连接 mongodb
// src\db\mongoose.js
const mongoose = require('mongoose')
const { mongodbConf } = require('../config/index')
const { host, port, dbName, user, password } = mongodbConf
// 拼接连接字符串
let url = `mongodb://${host}:${port}` // dev 环境
if (user && password) {
url = `mongodb://${user}:${password}@${host}:${port}` // prd 环境
}
// 开始连接( 使用用户名和密码时,需要 `?authSource=admin` )
mongoose.connect(`${url}/${dbName}?authSource=admin`, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
// 连接对象
const db = mongoose.connection
db.on('error', err => {
console.error('mongoose connect error', err)
})
// 执行 node src/db/mongoose.js 测试连接
db.once('open', () => {
// 用以测试数据库连接是否成功
console.log('mongoose connect success')
})
module.exports = mongoose控制台执行 node src/db/mongoose.js ,已正确连接数据库。

新建 model
// src\models\WorksModel.js
const mongoose = require('../db/mongoose')
const WorkScheme = mongoose.Schema(
{
// mongodb 会自动生成 _id,不用自己专门定义
//标题
title: String,
// 页面的组件列表
components: [Object],
// 页面的属性
props: Object,
setting: Object,
},
{
timestamps: true
}
)
const WorkModel = mongoose.model('work', WorkScheme)
module.exports = {
WorkModel
}进一步测试数据库连接
// src\routes\index.js
const router = require('koa-router')()
const packageInfo = require('../../package.json')
const testMysqlConn = require('../db/mysql2')
const ENV = require('../utils/env')
const { WorkModel } = require('../models/WorksModel')
// 测试数据库连接
router.get('/api/db-check', async (ctx) => {
// 测试 mysql 数据库连接
const mysqlRes = await testMysqlConn()
// 测试 mongodb 数据库连接
let mongodbConn
try {
mongodbConn = true
await WorkModel.findOne()
} catch (error) {
mongodbConn = false
}
ctx.body = {
errno: 0,
data: {
name: 'biz editor server',
version: packageInfo.version,
ENV,
mysqlConn: mysqlRes.length > 0,
mongodbConn
}
}
})
module.exports = router访问 http://localhost:3000/api/db-check,可以看到 mongodbConn 字段的值为 true, 说明数据库连接成功了。

mysql 和 Mongodb 在查询数据时,看着时间都不对,之间相差了八个小时,这跟时区有关系。
在 nodejs 中,new Date() 会显示世界标准睡觉,和北京时间相差八个时区,也就是八个小时,同理, new Date('2022-06-18 14:00:00') 的结果是 2022-06-18T06:00:00.000Z,也相差八个小时。
如果想要获取当前时区的时间,只需要使用 toString() 即可。
可以使用一些第三方库来进行格式化,比如 date-fns
console.log('new Date()')
console.log()
console.log(new Date())
console.log()
console.log("new Date('2022-06-18 14:00:00')")
console.log()
console.log(new Date('2022-06-18 14:00:00'))
console.log()
console.log("new Date().toString()")
console.log()
console.log(new Date().toString())控制台打印结果如下
