我在尝试处理objectIds数组时遇到了麻烦(对于mongoosejs模型中的更多人群),我希望你能帮助我。这是上下文:
我有一个nodejs / angularjs应用程序,我有产品和提供商。这些产品有一个属性提供程序,它是一个objectId的数组,引用提供程序。这是架构:
var productSchema = new Schema({
name : { type: String, required: true, trim: true},
providers : [{ type: Schema.Types.ObjectId, ref: 'provider' }]
});
用户可以通过GUI查询提供者列表。然后,他可以选择每个产品可用的提供商(复选框)。在内部,这意味着我将对应于provider _id的十六进制字符串推送到我的角度产品模型的数组提供程序中,然后将请求发送到nodejs / express服务器。
这是问题所在,我一直试图以多种方式将十六进制字符串转换为objectId,我找不到正确的方法。我的最后一次尝试是与猫鼬的“预设”功能。这是当前的版本。
productSchema.pre('save', function (next) {
var err = new Error('There was an error when trying to add the providers id as objectId'),
i = 0;
for (i = 0; i < this.providers.length; i++) {
this.providers[i] = mongoose.Types.ObjectId(this.providers[i].toString())
}
next(err);
});
欢迎任何帮助,我认为猫鼬只会处理一切。这样做的正常方法是什么? (预先保存只是一个想法)
感谢您阅读