我正在Node.js中使用Mongoose,我想知道是否可以使用“ this”或类似机制来引用当前选择的文档。这是我正在寻找的用例:
猫鼬模式:
const mySchema = mongoose.Schema({
position: Number,
date: Number,
lastEventDate: Number
});
假设在某个时间点发生了一个事件。对于通过其位置选择的文档,我想将“ lastEventDate”更新为该文档的日期。这是我的梦想代码:
Candle.findOneAndUpdate(
{position: myPosition},
{$set: {
'lastEventDate': THISDOCUMENT.date
}}
);
注意:我在这里使用$ set,因为实际的代码会更新子文档...
是否有内置的“ THISDOCUMENT”引用(例如我梦of以求的一个引用,可以在单个查询中完成所有操作?还是在更新文档之前必须先查询值(两次查询)。
无法在网络上找到任何东西,当涉及到使用“ this”时,我是一个新手。感谢您的任何帮助!
[编辑:]关于目标的精度:
收集所有提供的信息,我将冒险寻求一个可能的答案!
您可以尝试类似:
您的模式JS文件
const mySchema = mongoose.Schema({
position: Number,
date: Number,
lastEventDate: Number
});
mySchema.methods.doYourThing(){
this.lastEventDate=this.date; //it will set the lastEventDate
}
mongoose.model("myModel", MySchema, "mycollection")
现在,每当调用doYourThing()
时,所需的动作都会发生,在您拥有该模式的实例后调用它。
这是我自己的代码
const token = user.generateJwt(expirationDate); //send a token, it will be stored locally in the browser
它在返回user
实例的函数内部,并且在模型User
中,我完成了一个名为generateJwt
的函数,如我所展示的,我们有这样的东西:
return jwt.sign(
{
_id: this._id, //this is created automatically by Mongo
email: this.email,
name: this.name,
exp: parseInt(expiry.getTime() / 1000, 10), //Includes exp as UNIX time in seconds
level: this.level,
lastLogin: this.lastLogin,
failedLogin: this.failedLogin
},
process.env.JWT_SECRET
); // DO NOT KEEP YOUR SECRET IN THE CODE!
它返回用户的所有信息!
[请不要犹豫,添加评论和费用回馈,我不确定这是您想要的,但这就是为什么我了解您的要求。
没有选项正在使用虚拟机,他们也有权访问this
。