node.js - 在 Mongoose 预中间件中,我如何访问更新查询?

标签 node.js mongodb express mongoose mongoose-plugins

我正在尝试使用新的不稳定版本的 mongoose >4.0.0 来验证更新查询。

说我想使用以下查询更新架构

schema.update({_id:'blah'},{a:'blah'},function(err){
//do your thing
})

假设我有以下架构,

var schema = new Schema({
a:{type:String}
});

schema.pre('update',function(next){
var findQuery=this._conditions;  // gives {_id:'blah'}

// how do i get {a:'blah'}????

next();
});

如何在 pre 中间件中获取 {set:{a:'blah'}} 的更新查询,以便在执行更新之前进行一些检查?

或者我知道更新查询可以在 post 中间件中访问,在

schema.post('update',function(){
var findQuery=this._conditions;  // gives {_id:'blah'}

var updateQuery=this._update; //gives {$set:{a:'blah'}}

next();
});

但为时已晚,在实际更新数据库之前,我需要在预中间件中进行检查。

我尝试查看 pre 中间件的“this”对象,但在任何地方都找不到 updateQuery 对象,并且 this._update 在 pre 中间件中未定义。

有没有办法做到这一点? 谢谢

最佳答案

如果您仍在寻找适用于数组操作的解决方案,它看起来像在较新版本的 mongoose(至少 4.0.7+)中,this._update 在前置中间件中定义。

关于node.js - 在 Mongoose 预中间件中,我如何访问更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409269/

相关文章:

javascript - 将多个 Promise 传递到 Node JS 渲染中

node.js - Expressjs 中的链式请求

mysql - 错误: secretOrPrivateKey must have a value

node.js - 使用 bluebird 与 socket.io 不起作用

node.js - express-jwt 通过路由处理特定的 secret 密码

node.js - 检查多个 Mongoose 集合中特定字段的总和

mongodb - meteor Mup错误fbjs不变

mongodb - 同一服务器上是否可以有两个不同版本(1.2.5 和 2.0.4)的 Play Framework ?

python - mongodb 在聚合时从同一文档的数组中获取唯一值

javascript - 使用 node.js 的 Socket.io 根本没有表达?