我在MongoDB/Node后端使用pre和post挂钩,以便比较文档的预保存和后期保存版本,以便根据更改的内容通过模型触发器生成注释。在我的一个模型/集合中,这是工作的,但在另一个模型/集合中,它不像预期的那样工作,我不知道为什么。
在这个问题案例中,一些研究已经确定,即使我在使用save()的操作上调用一个save()钩子触发器,当我控制台出传入pre钩子的文档状态时,它已经应用了更改。换句话说,钩子不是在save()操作之前启动,而是在之后,据我所知。
以下是我的相关示范代码:
let Schema = mongoose
.Schema(CustomerSchema, {
t
请参阅更新后的示例代码@底部
我用的是猫鼬(太棒了!)在我当前的NodeJS项目中,我有一个MDB集合,它将把文档的更改存储在不同的集合中(基本上是存储所修改的内容的变更量)。
我试图实现的方法是创建一个函数来存储文档的JSON版本,这是通过pre('save')钩子完成的。然后创建另一个钩子,通过post('save')执行,以比较存储在pre('save')中的数据,并将其与文档新数据进行比较。
以下是我到目前为止所拥有的:
var origDocument
var testVar = 'Goodbye World'
mo
我想通过在使用AngularJS的mongoDB对象上使用findOneAndUpdate()来定义一个put方法。我能够成功地执行GET和POST操作,但我在定义PUT时遇到了困难。下面是我在app.js文件中定义的db对象:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/testing23');
var idObj = Schema({
_id: String,
name : {
我看了一些教程,在那里我发现了一段代码,stuck.Please帮助我理解这个代码,我已经在我的评论中标记了问题。
Code
UserSchema.pre('save', function(next){ //this is a pre hook which is used.understood.
var user = this; // what is the function of this?
var SALT_FACTOR = 5;
if(!user.isModified('password')){ //not unders
有了这个简单的片段,我可以很容易地在我的find查询中附加一个iid的附加参数。如何在中间件内部完成这种类型的挂钩?
// SchemaFile.js
import mongoose, {Schema} from 'mongoose'
export const ServiceSchema = new Schema({
displayName: String,
iid: String
})
// This works great, but `iid` needs to be dynamic
ServiceSchema.pre('find', functi
我的数据库中有一个用户的mongoose模型。我有一个更新控制器,它在我的模型上调用findByIdAndUpdate方法。现在,当我在我的数据库中存储密码时,我想首先对它们进行散列,所以我有:
userSchema.pre("save", async function(next) {
// if password is modified then hash it
next();
});
现在,当我的更新控制器调用findByIdAndUpdate时,在我看来model.save()没有被调用,所以哈希永远不会发生。
有没有一种方法可以重载findByAndUpdate
我需要知道修改过的字段,或者是否在、pre或post update钩子中修改了某个特定字段。我尝试了以下几种方法,但仍然无法弄清楚:
schema.post('update', function (doc) {
//check modified fields or if the name field was modified and then update doc
});
我知道也许有一种方法isModified类似于pre 保存,但我不知道如何使用更新挂钩。如有任何建议,将不胜感激。