node.js利用mongoose獲取mongodb數(shù)據(jù)的格式化問(wèn)題詳解
說(shuō)明
大家都知道在mongodb 中獲取數(shù)據(jù),不管使用回調(diào)函數(shù)還是Promise又或者generate 語(yǔ)法最后得到都是mongoose.Query對(duì)象,不能直接操作如同普通對(duì)象一樣得到單行數(shù)據(jù)。還有就是時(shí)間格式化問(wèn)題,見(jiàn)下面。
下面示例默認(rèn)使用co 和 es6 */yield 語(yǔ)法,當(dāng)然也可以使用async/await
1. 安裝mongoose
$ npm install mongoose co moment --save
說(shuō)明:
- mongoose: mongodb 的nodejs 數(shù)據(jù)庫(kù)驅(qū)動(dòng)
- co: 一個(gè)自動(dòng)執(zhí)行的generate函數(shù)容器
- moment: 時(shí)間格式化
2. 處理數(shù)據(jù)
如下代碼:
// 省略鏈接數(shù)據(jù)庫(kù),詳情見(jiàn)文檔 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) // 創(chuàng)建模型 const Person = new PersonModel() // 創(chuàng)建文檔對(duì)象 co(function * () { let person = yield Person.findOne({name: 'zhengsan'}) // 這里person 是一個(gè)mongoose.Query對(duì)象 // 到這里一般直接使用person 就是一個(gè)對(duì)象能夠獲取{ name, type, createAt } // 但是不能夠操作這三個(gè),除非單獨(dú)一個(gè)一個(gè)復(fù)制到另外一個(gè)對(duì)象,問(wèn)題就在這里? })()
這里通過(guò) Object.keys(person)
可以得到如下數(shù)據(jù):
[ '$__', 'isNew', 'errors', '_doc', '$init' ]
3. 得到普通對(duì)象
通過(guò)查詢mongoose 文檔最后得到解決辦法而且,可以輕松格式化哦:
// 接上面代碼 let person = yield Person.findOne({name: 'zhangsan'}) person = person.toJSON({getters: true}) // 此時(shí)person對(duì)象對(duì)象 // { name: 'zhengsan', age: 32, createAt: '2017-02-03 12:30' }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- node.js連接mongoose數(shù)據(jù)庫(kù)方法詳解
- node.js使用mongoose操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)購(gòu)物車的增、刪、改、查功能示例
- Node.js+jade+mongodb+mongoose實(shí)現(xiàn)爬蟲(chóng)分離入庫(kù)與生成靜態(tài)文件的方法
- Node.js中使用mongoose操作mongodb數(shù)據(jù)庫(kù)的方法
- Node.js的MongoDB驅(qū)動(dòng)Mongoose基本使用教程
- 安裝使用Mongoose配合Node.js操作MongoDB的基礎(chǔ)教程
- node.js mongoose index索引操作
相關(guān)文章
NodeJs生成sitemap站點(diǎn)地圖的方法示例
這篇文章主要介紹了NodeJs生成sitemap站點(diǎn)地圖的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06使用Node.js實(shí)現(xiàn)ORM的一種思路詳解(圖文)
這篇文章主要介紹了用Node.js實(shí)現(xiàn)ORM的一種思路詳解(圖文),需要的朋友可以參考下2017-10-10手動(dòng)下載Chrome并解決puppeteer無(wú)法使用問(wèn)題
本篇文章主要介紹了手動(dòng)下載Chrome并解決puppeteer無(wú)法使用問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11如何利用node實(shí)現(xiàn)發(fā)送QQ郵箱驗(yàn)證碼
我們?cè)陂_(kāi)發(fā)網(wǎng)站時(shí),發(fā)送驗(yàn)證碼的功能是必定會(huì)遇到的,下面這篇文章主要給大家介紹了關(guān)于如何利用node實(shí)現(xiàn)發(fā)送QQ郵箱驗(yàn)證碼的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Node.js包管理器代理工具Verdaccio輕松創(chuàng)建管理本地npm包倉(cāng)庫(kù)
這篇文章主要為大家介紹了Node.js包管理器代理工具Verdaccio輕松創(chuàng)建管理本地npm包倉(cāng)庫(kù)的使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10nodejs 整合kindEditor實(shí)現(xiàn)圖片上傳
這篇文章主要介紹了nodejs 整合kindEditor實(shí)現(xiàn)圖片上傳,需要的朋友可以參考下2015-02-02基于Nodejs實(shí)現(xiàn)文件壓縮和解壓功能
在?windows?系統(tǒng)上面,我們壓縮文件,常常需要安裝一些壓縮軟件才能實(shí)現(xiàn)壓縮,可能有些還存在一些問(wèn)題,所以本文就來(lái)使用Nodejs實(shí)現(xiàn)文件壓縮和解壓功能吧2024-03-03node.js實(shí)現(xiàn)websocket的即時(shí)通訊詳解
這篇文章主要介紹了深入淺出講解websocket的即時(shí)通訊,服務(wù)器可以主動(dòng)向客戶端推送信息,客戶端也可以主動(dòng)向服務(wù)器發(fā)送信息,是真正的雙向平等對(duì)話,屬于服務(wù)器推送技術(shù)的一種,需要的朋友可以參考下2023-05-05