猫鼬预保存钩子中未定义“ this”

汤姆·奥克利

我为用户实体制作了Mongoose数据库架构,并希望在updated_at字段中添加当前日期我正在尝试使用.pre('save', function() {})回调,但是每次运行回调时,都会收到一条错误消息,告诉我this未定义。我还决定使用ES6,我想这可能是这样做的原因(尽管一切正常)。我的猫鼬/节点ES6代码如下:

import mongoose from 'mongoose'

mongoose.connect("mongodb://localhost:27017/database", (err, res) => {
  if (err) {
    console.log("ERROR: " + err)
  } else {
    console.log("Connected to Mongo successfuly")
  }  
})

const userSchema = new mongoose.Schema({
  "email": { type: String, required: true, unique: true, trim: true },
  "username": { type: String, required: true, unique: true },
  "name": {
    "first": String,
    "last": String
  },
  "password": { type: String, required: true },
  "created_at": { type: Date, default: Date.now },
  "updated_at": Date
})

userSchema.pre("save", (next) => {
  const currentDate = new Date
  this.updated_at = currentDate.now
  next()
})

const user = mongoose.model("users", userSchema)
export default user

错误消息是:

undefined.updated_at = currentDate.now;
                       ^
TypeError: Cannot set property 'updated_at' of undefined

编辑:通过使用@vbranden的答案并将其从词法函数更改为标准函数来解决此问题。但是,我遇到了一个问题,尽管它不再显示错误,但没有更新updated_at对象中字段。我通过更改this.updated_at = currentDate.now为来解决此问题this.updated_at = currentDate

勃兰登

问题是您的箭头函数使用了词汇表https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions

改变

userSchema.pre("save", (next) => {
  const currentDate = new Date
  this.updated_at = currentDate.now
  next()
})

userSchema.pre("save", function (next) {
  const currentDate = new Date()
  this.updated_at = currentDate.now
  next()
})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬预保存钩子中未定义“ this”

来自分类Dev

查找是否在预保存的钩子猫鼬中更改了对象

来自分类Dev

模型中的猫鼬模型未定义

来自分类Dev

模型中的猫鼬模型未定义

来自分类Dev

猫鼬方法未定义

来自分类Dev

猫鼬:“ TypeError:未定义的类型在”

来自分类Dev

猫鼬架构未定义

来自分类Dev

猫鼬findOne返回未定义

来自分类Dev

猫鼬填充返回未定义

来自分类Dev

猫鼬填充未定义的字段

来自分类Dev

猫鼬模型未定义

来自分类Dev

猫鼬独特:真正的预保存钩子在验证之前调用钩子

来自分类Dev

猫鼬CastError:在路径“ apps”中,值“ [object Object]”的强制转换为未定义失败

来自分类Dev

猫鼬CastError:在路径“ apps”中,值“ [object Object]”的强制转换为未定义失败

来自分类Dev

事务中的猫鼬 findOne():未捕获的类型错误:无法读取未定义的属性“$elemMatch”

来自分类Dev

猫鼬的嵌套模式的未定义类型

来自分类Dev

猫鼬填充返回null或未定义

来自分类Dev

猫鼬模式引用和未定义类型“ ObjectID”

来自分类Dev

猫鼬填充回调未定义

来自分类Dev

猫鼬查询缺少(或未定义)字段的地方

来自分类Dev

猫鼬模式“ this”关键字返回未定义

来自分类Dev

TypeError:无法读取猫鼬未定义的属性“ find”

来自分类Dev

如果值未定义则更新-猫鼬

来自分类Dev

无法处理猫鼬查询结果-承诺未定义

来自分类Dev

猫鼬模式方法返回未定义

来自分类Dev

猫鼬模式虚拟属性始终返回未定义

来自分类Dev

猫鼬模型在填充后获得未定义的属性

来自分类Dev

遍历猫鼬结果返回未定义

来自分类Dev

猫鼬找到返回的未定义文档

Related 相关文章

热门标签

归档