說明
大家都知道在mongodb 中獲取數據,不管使用回調函數還是Promise又或者generate 語法最后得到都是mongoose.Query對象,不能直接操作如同普通對象一樣得到單行數據。還有就是時間格式化問題,見下面。
下面示例默認使用co 和 es6 */yield 語法,當然也可以使用async/await
1. 安裝mongoose
$ npm install mongoose co moment --save
說明:
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' }
總結
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com