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 相关文章推荐
JS 字符串连接[性能比较]
May 10 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
Aug 11 Javascript
js简单的表格添加行和删除行操作示例
Mar 31 Javascript
Node.js中对通用模块的封装方法
Jun 06 Javascript
JS实现跟随鼠标的链接文字提示框效果
Aug 06 Javascript
JS实现的竖向折叠菜单代码
Oct 21 Javascript
js实现手机发送验证码功能
Mar 13 Javascript
ES6新数据结构Set与WeakSet用法分析
Mar 31 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
Nov 14 Javascript
SpringBoot在yml配置文件中配置druid的操作
Nov 16 Javascript
原生js实现滑块区间组件
Jan 20 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
Jquery实现弹出层分享微博插件具备动画效果
2013/04/03 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
判断浏览器的内核及版本号方法汇总
2015/01/05 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python之列表实现栈的工作功能
2019/01/28 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
python 解决flask uwsgi 获取不到全局变量的问题
2019/12/22 Python
Python如何生成xml文件
2020/06/04 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
什么是事务?为什么需要事务?
2012/01/09 面试题
党员个人自我剖析材料
2014/10/08 职场文书
商场收银员岗位职责
2015/04/07 职场文书