转换为ObjectID的值失败

时间:2019-01-17 11:06:27

标签: javascript arrays node.js express

我在数组中的身体中收到名称(字符串),并且我想将每个数组转换为我收藏中的对象ID。

我想将字符串引用到架构,并用其ObjectId替换它

  

这是我的架构:

var tagSchema = new Schema({

name: {
    type: String,
    required: true
  }
});
  

这是我在api中所做的事情:

var tags = req.body.tags;
tags.forEach((item, index) => {
    Tag.findOne({name: item}, (err,result)=> {
      tags[index] = result._id;
    });
 })

但是在我的控制台中,出现此错误:

CastError:在路径“标签”处,值“ ['tag1','tag2']”的转换为数组失败

  

这是我记录标签的时间:

['tag1','tag2']

问题出在哪里?

谢谢!

1 个答案:

答案 0 :(得分:0)

tags是一个字符串数组,您要在其中推入objectId,这就是为什么它会产生错误CastError:在路径“ tags”处,值“ ['tag1','tag2']”的转换为Array失败

有多种解决方案,您可以根据需要实施。 参见下面的示例。

var tags = req.body.tags;
    var tagsObjectId=[];
    tags.forEach((item, index) => {
        Tag.findOne({name: item}, (err,result)=> {
          if(!err){
             tagsObjectId.push(result._id)
          }
        });
     })