Why are my Mongoose 3.8.7 schema getters and setters being ignored?

前端 未结 3 1987
情话喂你
情话喂你 2021-02-19 13:01

While working with Node.js, Mongoose and MongoDB, I have found that my Mongoose schema getters and setters do not fire when I perform a findOne query.

I have found an ol

相关标签:
3条回答
  • 2021-02-19 13:42

    Are you assuming virtuals are not working because they don't show up in your console.log output? If so, that is by design. Virtuals are external to your actual document so do not get printed with console.log by default. To get them to display, read these docs: http://mongoosejs.com/docs/api.html#document_Document-toObject

    0 讨论(0)
  • 2021-02-19 13:48

    Try

    schema.virtual('password').get(function () {
        return this.username;
    });
    

    as your getter function, this is your entity instance and the value parameter doesn't mean much here.

    If you were writing a setter function, you would have to write this.username = value.

    0 讨论(0)
  • 2021-02-19 14:00

    I was having the same problem with getters not modifying the returned documents when querying with Mongoose. To make this apply to every query, you can do this:

    // Enable Mongoose getter functions
    schema.set('toObject', { getters: true });
    schema.set('toJSON', { getters: true });
    
    0 讨论(0)
提交回复
热议问题