gpt4 book ai didi

node.js - hasOwnProperty 在 Mongoose 中的预验证中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:27:36 24 4
gpt4 key购买 nike

我有一个架构 -

var PostSchema = new mongoose.Schema({
title: String,
link: String,
author: {type:String,required:true},
upvotes: {type: Number, default: 0},
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Comment' }]
});

PostSchema.pre('validate',function(next){
console.log("Pre validate document printing - ");
console.log(this);
console.log("Pre validate called. Title : ",this._id);
console.log("Author is : ",this.author);
console.log("hasOwnProperty : ",this.hasOwnProperty("author"));
console.log("this.author==\'\' : ",this.author=='');
if(!(this.hasOwnProperty("author"))||this.author==''){
console.log("Here");
this.author="Hacked";
}
next();
});

在我的 route -

router.post('/posts', auth,function(req, res, next){
console.log(req.body);
console.log("Before - ");
var post = new Post(req.body);
post.upvotes="2";
console.log(post);
post.author="Meseeks";
console.log("After - ");
console.log(post);
console.log("Creating author");
//post.author = req.payload.username;
post.save(function(err, post){
if(err){return next(err);}
res.json(post);
});
});

Nodejs 日志 - 打印此 -

Before - 
{ title: 'im mr meeseeks',
link: null,
_id: 589f0f3ddf781803b459dc00,
comments: [],
upvotes: 2 }
After -
{ author: 'Meseeks',
title: 'im mr meeseeks',
link: null,
_id: 589f0f3ddf781803b459dc00,
comments: [],
upvotes: 2 }
Creating author
Pre validate document printing -
{ author: 'Meseeks',
title: 'im mr meeseeks',
link: null,
_id: 589f0f3ddf781803b459dc00,
comments: [],
upvotes: 2 }
Pre validate called. Title : 589f0f3ddf781803b459dc00
Author is : Meseeks
hasOwnProperty : false
this.author=='' : false
Here
Post validate called. Title : 589f0f3ddf781803b459dc00
Pre save called. Title : 589f0f3ddf781803b459dc00
Post save called. Title : 589f0f3ddf781803b459dc00

我正在我的 Router 中手动设置作者。但是,预初始化函数无法验证对象中是否存在属性“author”。这怎么可能?我做错了什么吗?

如何检查该属性是否存在于预初始化中?

最佳答案

此时代码中的“this”不是一个对象,只是一个原型(prototype)。提供了更多解释和解决方法here

关于node.js - hasOwnProperty 在 Mongoose 中的预验证中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42176763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com