1

我在尝试处理 objectIds 数组时遇到了麻烦(为了进一步填充 mongoosejs 模型),我希望你能帮助我。这是上下文:

我有一个小的 nodejs / angularjs 应用程序,其中有产品和提供者。产品有一个属性 provider,它是 objectId 的数组,引用提供者。这是架构:

var productSchema = new Schema({

    name            : { type: String, required: true, trim: true},
    providers       : [{ type: Schema.Types.ObjectId, ref: 'provider' }]
});

用户可以通过 GUI 查询提供者列表。然后他可以选择每个产品可用的提供商(复选框)。在内部,这意味着我将与 providers _id 对应的十六进制字符串推送到我的角度产品模型的数组提供者中,然后将请求发送到 nodejs/express 服务器。

这是问题所在,我一直在尝试以多种方式将十六进制字符串转换为 objectId,但我找不到正确的方法。我最后一次尝试是使用猫鼬的“presave”功能。这里是当前版本。

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);
});

欢迎任何帮助,我认为猫鼬会独自处理所有事情。这样做的正常方法是什么?(预保存只是一个想法)

谢谢阅读

4

0 回答 0