Javascript Mongo在可选字段中填充,给出转换错误

Javascript Mongo在可选字段中填充,给出转换错误,javascript,node.js,mongodb,mongoose,mongoose-schema,Javascript,Node.js,Mongodb,Mongoose,Mongoose Schema,我有一个“供应商”和“媒体”收藏,媒体收藏商店供应商档案图片,这不是供应商必须填写的字段。有些供应商有配置文件图片有些没有,我想列出所有供应商,包括他们的配置文件图片参考。但当我从meidas填充profilePicture时,我的演员阵容出现了错误。我还有其他的填充,比如“userId”、“venueId”,这些都是必填字段,并且可以正常工作 错误: CastError:对于未定义的模型媒体,路径_id处的值xyz,转换为ObjectId失败 查找查询: 媒体模型 供应商模型 请尝试下面的代码

我有一个“供应商”和“媒体”收藏,媒体收藏商店供应商档案图片,这不是供应商必须填写的字段。有些供应商有配置文件图片有些没有,我想列出所有供应商,包括他们的配置文件图片参考。但当我从meidas填充profilePicture时,我的演员阵容出现了错误。我还有其他的填充,比如“userId”、“venueId”,这些都是必填字段,并且可以正常工作

错误: CastError:对于未定义的模型媒体,路径_id处的值xyz,转换为ObjectId失败

查找查询:

媒体模型

供应商模型

请尝试下面的代码

const Vendors = require('path/to/model_vendor');

Vendors.find()
.populate([{path: 'venues'}, {path: 'users'}, {path: 'medias'}])
.skip(skip_value)
.limit(limit_value)
.sort({condition: 1 }) // Modify according to your need
.exec().
.then(vendors=>{
console.log(vendors)
}).catch(err=>{
console.log(err)
})

已尝试但未获得任何填充结果,我的意思是,现在用户、场馆正在记录列表,获取所有未填充字段的供应商。使用相同的填充查询时,问题是数据库中有一些旧的垃圾数据。@Dibish是的,您是对的。由于您的错误,建议对路径_idxyz处的值xyz强制转换为ObjectId失败。xyz不能是ObjectId
const MediasModel = () => {
  const MediasSchema = new mongoose.Schema({
    url: { type: String, required: true },
    key: { type: String},
  }, { timestamps: { createdAt: 'createdDate', updatedAt: 'modifedDate' } });
  return mongoose.model('medias', MediasSchema);
};

module.exports = MediasModel();
const Vendors = new mongoose.Schema({
  venueId: { type: mongoose.Schema.Types.ObjectId, ref: 'venues' },
  userId: { type: mongoose.Schema.Types.ObjectId, ref: 'users' },
  name: { type: String, required: true },
  profilePicture: { type: mongoose.Schema.Types.ObjectId, ref: 'medias' },
}, { timestamps: { createdAt: 'createdDate', updatedAt: 'modifedDate' } });

module.exports = mongoose.model('vendors', Vendors);
const Vendors = require('path/to/model_vendor');

Vendors.find()
.populate([{path: 'venues'}, {path: 'users'}, {path: 'medias'}])
.skip(skip_value)
.limit(limit_value)
.sort({condition: 1 }) // Modify according to your need
.exec().
.then(vendors=>{
console.log(vendors)
}).catch(err=>{
console.log(err)
})