猫鼬和Node.js通过那里的ID获取用户名

时间:2020-07-04 18:10:26

标签: javascript node.js mongodb express mongoose

我是猫鼬的新手,在其他地方找不到答案。

我有一个这样的用户架构:

const userSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    date: {
        type: Date,
        default: Date.now
    },
    admin: {
        type: Boolean,
        default: true
    },
    writer: {
        type: Boolean,
        default: true
    },
    producer: {
        type: Boolean,
        default: true
    }
})

我想用他们的_id来给某人起名字

我有这个:Users.findById(posts.userID).schema.obj.name,但显然没有返回名字,谢谢!

2 个答案:

答案 0 :(得分:1)

findById返回a single document,其中包含您在架构中定义的属性的实际值。因此,如果您只是想从生成的文档中获取名称,可以执行以下操作:

 const user = await Users.findById(posts.userID);
 const name = user.name;

答案 1 :(得分:1)

通过猫鼬向mongo发送的任何请求都是异步的。 因此,.findById方法返回类似promise的对象。 您需要通过以下三种方式之一等待结果:

  1. 传递回调函数之类的
Users.findById(id, function (err, user) {
  console.log(user.name);
});
  1. 像使用诺言一样使用.then()
Users.findById(id).then((user) => {
  console.log(user.name);
});
  1. 使用异步/等待:
async function getUser(id) {
   const user = await Users.findById(id);
   console.log(user.name);
};