1

私はMongooseJSを使用しています。以下のエラーが表示されます。

{ message: 'Cast to ObjectId failed for value "" at path "parent"',
  name: 'CastError',
  type: 'ObjectId',
  value: '',
  path: 'parent'
}

このオブジェクトの親を設定したくありません。どこが間違っていますか?私は何をすべきか?

アップデート:

var category = new Category(req.body)
if(typeof category.parent === 'undefined'){
    category.parent=undefined;
}

カテゴリ スキーマは次のとおりです。

var CategorySchema = new Schema({
  name: {
    tr: {type : String, default : '', trim : true},
    en: {type : String, default : '', trim : true}
  },
  description: {
    tr: {type : String, default : '', trim : true},
    en: {type : String, default : '', trim : true}
  },
  subcategories:[{type : Schema.ObjectId, ref : 'Category', null: true}],
  parent: {type : Schema.ObjectId, ref : 'Category', null: true},
  products:[{type : Schema.ObjectId, ref : 'Product'}],
  images : [String],
  order: {type : Number, default: 0},
  createdAt  : {type : Date, default : Date.now},
  locale: {type : String, null: false}
})

私の翡翠のコードは次のとおりです。

.controls
        select#parent(name="parent")
          option(value="") Select
          each cat in categories
            - if (category.subcategories.map(function(e) { return e.id; }).indexOf(cat.id) != -1)
                option(value=cat.id, selected) #{cat.name.tr}
            - else
                option(value=cat.id) #{cat.name.tr}

したがって、ユーザーが親を選択しない場合、サーバーに「」が送信され、サーバーはそのエラーを返します。

4

2 に答える 2

0

category.parentこのエラーは、設定しようとしている型をプロパティにキャストできないことを示していますObjectId。通過するparentフィールド値req.bodyObjectId

また、すべてのプロパティは MongooseJs モデルで定義されており、undefined.

次のように設定する必要がありますnull

category.parent = null;

これで値がクリアされます。

于 2013-11-06T12:06:12.140 に答える
0

古い質問ですが、同じ問題が発生したため、回答を共有したいと思います。Category-Object を作成する前に、有効な値が設定されていない場合は、 parent-property から手動で削除する必要があります。req.body

if (req.body.parent == "")
  delete req.body.parent; // or req.body.parent = null;
var category = new Category(req.body);

後で に設定してもnull機能しません。理由は聞かないでください。

于 2014-11-08T21:40:34.680 に答える