Node.js MongoDB专用字段
我有一个产品模型,它有很多领域。其中一些专用于前端应用程序,例如:Node.js MongoDB专用字段,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一个产品模型,它有很多领域。其中一些专用于前端应用程序,例如: var GameSchema = new Schema({ likes: { type: [{ type: Schema.ObjectId, ref: 'User' }] }, likes_count: { type: Number } }); 我不需要数据库中的likes\u count字段,但控制器
var GameSchema = new Schema({
likes: {
type: [{
type: Schema.ObjectId,
ref: 'User'
}]
},
likes_count: {
type: Number
}
});
我不需要数据库中的likes\u count
字段,但控制器只返回模型具有的字段,所以我将likes\u count
字段添加到数据库模型中
exports.some_method = function(req, res){
var game = req.game;
game.likes_count = game.likes.length
res.json(game);
}
在发送请求时,有没有一种方法可以向数据库模型添加额外的数据,而不在数据库中 请注意,问题不在
likes\u count
字段本身,我有不同的模型,但重点是在db模型上有额外的数据。在发送请求时,有没有一种方法可以在db模型中添加额外的数据而不在db中
从司机的角度来看,你也许可以做到这一点,我将把这留给那些知道这些事情的人。查看下面的帖子
我可以从MongoDB引擎和服务器进程方面进行回答;如果您正在寻找一种方法来标记JSON文档中的一个字段,使其在发送到MongoDB引擎收到的实际CRUD请求时成为私有字段,那么不会
但是,您可以在实际CRUD请求之前拦截JSON并对其进行转换。在执行INSERT、Modify或Update语句之一之前,不会插入正在生成的JSON。伪步骤是生成一个JSON文档,将其发送到MongoDB前面的broker\wrapper等,然后通过删除相关字段对其进行转换,然后将新对象作为CRUD请求发送到MongoDB引擎。对于仍然感兴趣的人,MongoDB mongoose(@robertklep)有字段,可以用作临时数据字段,但在数据库中不存在
GameSchema.virtual('likes_count').get(function () {
return this.likes.length;
});
请注意,您的模型必须对这样的虚拟对象具有权限,以便您可以在控制器中使用它
var UserSchema = new Schema({
username: {
type: String
}
}, {
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
你的意思是我必须在每次CRUD操作时将
苹果
转换为菠萝
,并在前端的每个请求时转换回来?你总结了。这是一种(单一的)方法,在这方面不是一种非常有效的方法!我根本不和司机一起工作;但这可能是一个更好的领域去挖掘,通过对s.O和谷歌关于这个话题的简短访问。我认为我描述的方式是低效的。这是一个好问题;因此+1。这确实是猫鼬的一个特性,而不是猫鼬本身。对我来说,对于这样一个琐碎的东西来说,这似乎是一种过度的杀伤力operation@robertklep是的,只是打字错误