Mongoose模式中的示例方法不起作用

cgfeq70w  于 2023-02-04  发布在  Go
关注(0)|答案(1)|浏览(116)

我试图将“方法”添加到架构中。我通过架构选项将一个函数分配给“方法”对象。但它不起作用(返回错误)。

const userSchema = new mongoose.Schema({}, 

  { statics: {}}, 
  { methods: {   
      generateAuthToken() {
      const token = jwt.sign({ _id: this._id.toString() }, "nodejstraining");
      return token;
     },
  }
)

当我将一个函数赋给“methods”对象时,代码正在工作(我得到了标记):

userSchema.methods.generateAuthToken = function () {
    const token = jwt.sign({ _id: this._id.toString() }, "nodejstraining");
    return token;
};

这是一个路由器:

router.post("/users/login", async (req, res) => {

try {
    const user = await ....  // I'm getting a 'user' here
    const token = await user.generateAuthToken();   
    
    res.send({ user, token });
  } catch (err) {
    res.status(400).send("Unable to login");
  }
});

为什么第一个选项不起作用?谢谢。

h6my8fg2

h6my8fg21#

“静态”和“方法”应该是一个参数的组成部分。
不是

const userSchema = new mongoose.Schema({}, 
    { statics: {}},
    { methods: {}},
  )

但是

const userSchema = new mongoose.Schema({}, 
    { 
        statics: {},
        methods: {},
    },
  )

相关问题