我正在使用2.2 Mongoose版本的版本3 MongoDB.我注意到一个__v字段已经开始出现在我的MongoDB文档中.它与版本控制有关吗?怎么用?
我可以从查询结果中的字段除外声明它:
field:{type:'string',select:false}
但是有可能用_id和__v字段做到这一点吗?我试过了
_id:{select:false}
但它似乎无法奏效
我想知道如何将_id虚拟地或无论如何更改为id,以便数据库的直接json输出看起来很漂亮.另外,我看到我的文档中生成了一个__v,并且不确定如何隐藏这些字段.
我想在此前言,我已经在这里阅读了几个关于这个问题的帖子.
我有一个node/express/mongo应用程序,其中包含以下内容:
app.js:
var express = require('express')
var bodyParser = require('body-parser')
var cors = require('cors')
var morgan = require('morgan')
var mongoose = require('mongoose')
var passport = require('passport')
var app = express()
// MongoDB Setup
var configDB = require('./config/database.js')
mongoose.connect(configDB.url)
app.use(morgan('combined'))
app.use(bodyParser.json())
// Check security with this
app.use(cors())
// load our routes and pass in our app and fully configured passport
require('./routes')(app)
app.listen(process.env.PORT || 8081)
console.log('We are up and running, captain.')
Run Code Online (Sandbox Code Playgroud)
routes.js
const AuthenticationController = require('./controllers/AuthenticationController')
module.exports = (app) => { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 mongoose 制作一个 REST API,我想隐藏 __v 属性,并且通过执行以下操作成功将其隐藏在 find 和 findById 上:
Contact.find({}, '-__v', function(error, list) { });
Contact.findById(req.params.id, '-__v', function(error, item) { });
Run Code Online (Sandbox Code Playgroud)
但是当我使用创建方法时
Contact.create(req.body, function(error, item) { });
Run Code Online (Sandbox Code Playgroud)
它返回给我添加了 __v 属性的项目。
我还尝试了在这样的模式上使用 select: false 的方法
__v: {
type: Number,
select: false
}
Run Code Online (Sandbox Code Playgroud)
此方法也执行相同的操作,它从 find 和 findById 中隐藏 __v 属性,但也不从 crate 方法返回的对象中隐藏它。