我在数组中的身体中收到名称(字符串),并且我想将每个数组转换为我收藏中的对象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']
问题出在哪里?
谢谢!
答案 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)
}
});
})