创建新字段不想将 mongoose.Types.ObjectId 保存为 MongoDB 中的列

creating new field doesn't want to save mongoose.Types.ObjectId as a column in MongoDB

我正在尝试 link 两个 table 到 mongo 数据库。我有一个用户 table,其中用户有一个 _id。还有一个新闻 table,其中列应该是 _id(对于新闻)和 userId(对于 link 新闻给用户)。

我的 api 的工作方式是在请求通过身份验证时将用户 ID 附加到 req 变量。

这是用户的模型

const mongoose = require("mongoose");
const User = mongoose.model(
  "User",
  new mongoose.Schema({
    name: String,
    surname: String,
    email: String,
    password: String,
    admin: Boolean,
    profileImage: String,
  })
);

这是新闻的模型

const mongoose = require("mongoose");
const News = mongoose.model(
  "News",
  new mongoose.Schema({
    userID: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
    },
  })
);

这是保存新新闻记录的片段:

upload = (req, res) => {
const news = new News({
    userId: mongoose.Types.ObjectId(req.userId)
})

//at this point userID in news is UNDEFINED for some reason. req.userId is not undefined.
news.save((err)=>{
      if (err) {
        res.status(500).send({ message: err + "NewsError" });
        return;
      }

})
}

理想情况下,这应该以数据库中 table 中出现的新行结束,但只有自动生成的 _id 出现,没有 userID No UserID column

也许您可以使用以下代码代替 mongoose.Types.ObjectId(req.userId)

const { ObjectId } = require('mongodb');

userId: ObjectId(req.userId);

我发现错误:), 我在哪里定义模型。 userID 拼写为大写 ID,但我将变量分配为 userId。我只是瞎了眼。感谢大家的帮助。