node.js利用mongoose获取mongodb数据的格式化问题详解


Posted in Javascript onOctober 06, 2017

说明

大家都知道在mongodb 中获取数据,不管使用回调函数还是Promise又或者generate 语法最后得到都是mongoose.Query对象,不能直接操作如同普通对象一样得到单行数据。还有就是时间格式化问题,见下面。

下面示例默认使用co 和 es6 */yield 语法,当然也可以使用async/await

1. 安装mongoose

$ npm install mongoose co moment --save

说明:

  • mongoose: mongodb 的nodejs 数据库驱动
  • co: 一个自动执行的generate函数容器
  • moment: 时间格式化

2. 处理数据

如下代码:

// 省略链接数据库,详情见文档
const mongoose = require('mongoose')
const co = require('co')
const Schema = mongoose.Schema
const PersonSchema = new Schema({
 name: String,
 age: String,
 createAt: {
  type: Date,
  default: Date.now,
  get: v => moment(v).format('YYYY-MM-DD HH:mm')
 }
})

const PersonModel = mongoose.model('Person', PersonSchema) // 创建模型
const Person = new PersonModel() // 创建文档对象
co(function * () {
 let person = yield Person.findOne({name: 'zhengsan'})
 // 这里person 是一个mongoose.Query对象
 // 到这里一般直接使用person 就是一个对象能够获取{ name, type, createAt } 
 // 但是不能够操作这三个,除非单独一个一个复制到另外一个对象,问题就在这里?
})()

这里通过 Object.keys(person)可以得到如下数据:

[ '$__', 'isNew', 'errors', '_doc', '$init' ]

3. 得到普通对象

通过查询mongoose 文档最后得到解决办法而且,可以轻松格式化哦:

// 接上面代码
let person = yield Person.findOne({name: 'zhangsan'})
person = person.toJSON({getters: true})
// 此时person对象对象
// { name: 'zhengsan', age: 32, createAt: '2017-02-03 12:30' }

总结

以上就是这篇文章的全部内容,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
在一个form用一个SUBMIT(或button)分别提交到两个处理表单页面的代码
Feb 15 Javascript
nicejforms——美化表单不用愁
Feb 20 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
Feb 05 Javascript
JQuery设置文本框和密码框得到焦点时的样式
Aug 30 Javascript
javascript实现鼠标拖动改变层大小的方法
Apr 30 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
图文详解JavaScript的原型对象及原型链
Aug 02 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
Jan 11 Javascript
Javascript实现登录记住用户名和密码功能
Mar 22 Javascript
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 jQuery
jquery中封装函数传递当前元素的方法示例
May 05 jQuery
JavaScript/TypeScript 实现并发请求控制的示例代码
Jan 18 Javascript
node.js中http模块和url模块的简单介绍
Oct 06 #Javascript
你应该知道的几类npm依赖包管理详解
Oct 06 #Javascript
vue-cli构建项目使用 less的方法
Oct 04 #Javascript
浅谈Angular2 模块懒加载的方法
Oct 04 #Javascript
浅谈angular2路由预加载策略
Oct 04 #Javascript
浅谈Angular路由复用策略
Oct 04 #Javascript
React-Native之定时器Timer的实现代码
Oct 04 #Javascript
You might like
怎样在php中使用PDF文档功能
2006/10/09 PHP
php管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
Laravel 创建可以传递参数 Console服务的例子
2019/10/14 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
javascript开发技术大全 第4章 直接量与字符集
2011/07/03 Javascript
jquery焦点图片切换(数字标注/手动/自动播放/横向滚动)
2013/01/24 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
2014/09/01 Javascript
JavaScript的原型继承详解
2015/02/15 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
2017/01/13 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
Three.js基础学习教程
2017/11/16 Javascript
vue项目部署到nginx/tomcat服务器的实现
2019/08/26 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
vue 限制input只能输入正数的操作
2020/08/05 Javascript
[56:58]VP vs Optic 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
python交互式图形编程实例(三)
2017/11/17 Python
Python3安装Scrapy的方法步骤
2017/11/23 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
使用python3实现操作串口详解
2019/01/01 Python
python如何从文件读取数据及解析
2019/09/19 Python
Python实现随机爬山算法
2021/01/29 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
使用canvas一步步实现图片打码功能的方法
2019/06/17 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
工程承诺书怎么写
2014/05/24 职场文书
涨价通知
2015/04/23 职场文书
工作经历证明范本
2015/06/15 职场文书
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
使用Redis实现分布式锁的方法
2022/06/16 Redis