Mongoosejs,如何将来自请求体的字符串数组保存为objectId数组?

时间:2013-02-03 19:18:47

标签: node.js angularjs mongoose express

我在尝试处理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);
});

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

感谢您阅读

0 个答案:

没有答案