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 代码优化点滴记录
Feb 19 Javascript
ExtJS4中使用mixins实现多继承示例
Dec 03 Javascript
jquery实现页面图片等比例放大缩小功能
Feb 12 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
Aug 28 Javascript
js实现可折叠展开的手风琴菜单效果
Sep 07 Javascript
学习JavaScript设计模式之中介者模式
Jan 14 Javascript
JavaScript基础教程——入门必看篇
May 20 Javascript
HTML5开发Kinect体感游戏的实例应用
Sep 18 Javascript
Three.js如何实现雾化效果示例代码
Sep 27 Javascript
vue项目中使用axios上传图片等文件操作
Nov 02 Javascript
JS跨域请求的问题解析
Dec 03 Javascript
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
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用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
js文字滚动停顿效果代码
2008/06/28 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
解决pycharm下pyuic工具使用的问题
2020/04/08 Python
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
Gerry Weber德国官网:优质女性时装,德国最大的时装公司之一
2019/11/02 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
《金孔雀轻轻跳》教学反思
2014/04/20 职场文书
初三学习计划书范文
2014/04/30 职场文书
营销部内勤岗位职责
2014/04/30 职场文书
二手房购房协议书范本
2014/10/05 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
文明单位汇报材料
2014/12/24 职场文书
公司人事任命通知
2015/04/20 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
速龙x4-860k处理器相当于i几
2022/04/20 数码科技