0

コーヒースクリプトで申し訳ありません。

これで髪を引っ張ります。私はこれに似たスキーマを持っています:

reviewSchema = Schema
  title: String
  meta: 
    author: String
    date: String
  article: String
  tags: [
    type: Schema.Types.ObjectId
    ref: "Tag"
  ]
  images: [
    type: Schema.Types.ObjectId
    ref: "Image"
  ]
  attr: 
    appearance: String
    aroma: String
    flavor: String
    from: String
    grade: String
    lineage: String
    name: String
    overall: String
    packaging: String
    pickupdate: String
    price: String
    reason: String
    story: String
    type: String
Review = mongoose.model 'Review', reviewSchema

また、対応するデータを含むいくつかの JSON ファイルに組み立てたデータもあります。新しいスキーマを作成するときは、そのファイルを調べて JSON を取得し、次の方法で新しいレビュー オブジェクトを作成します。

thisReview = 新しいレビュー json、最小化: false

「thisReview」を作成する前に json を console.log すると、「attr」キーにデータが適切に入力されていることがわかりますが、「thisReview」を console.log にするか、データベースをチェックすると、「attr」キーの結果が返されません。私の文書の。「attr」は完全に無視されます。

各 JSON ファイルの JSON.attr オブジェクトにスキーマの各キーがあり、存在しないキーには "" (空) 文字列が含まれていることを確認しました。スキーマのメタ オブジェクトなどの他のネストされたオブジェクトは、完全に設定されています。

何が起こっているのですか?

追加情報: attr オブジェクト内のキーと値のペアを取り除き、代わりに attr: Schema.Types.Mixed を割り当てると、

その後、空の ("") 文字列を含むすべてのデータが正常に保存されます。

どんな助けでも歓迎です。

4

1 に答える 1

2

typeプロパティは、 attrMongoose をつまずかせてattr、埋め込みオブジェクトではなく文字列であると考えさせている可能性があります。次のように、プロパティに対してより明示的な定義を使用します。

attr: 
    appearance: String
    aroma: String
    flavor: String
    from: String
    grade: String
    lineage: String
    name: String
    overall: String
    packaging: String
    pickupdate: String
    price: String
    reason: String
    story: String
    type:
        type: String
于 2013-06-28T05:39:11.890 に答える