是否可以在猫鼬中引用“此”文档?

问题描述 投票:0回答:1

我正在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”时,我是一个新手。感谢您的任何帮助!

[编辑:]关于目标的精度:

  • 我处于仅能确定正确文档的位置“ myPosition”的位置,并且我想将“ lastEventDate”设置为与该文档的“ date”相同的值。
  • 我的问题是关于效率:是否可以在单个上载查询中执行更新?还是我必须先下载“日期”值,然后再将其上传回“ lastEventDate”键?
node.js mongoose this
1个回答
0
投票

收集所有提供的信息,我将冒险寻求一个可能的答案!

您可以尝试类似:

您的模式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

© www.soinside.com 2019 - 2024. All rights reserved.