2016-08-25 4 views
1

ではありません私は攘夷、VOGELSとNodeJSDynamoDBのはTypeErrorに攘夷エラーを修正する方法:child.schema._getLabelが機能

schema: { 
 
email: Joi.string().email(), 
 
    item: Joi.array().items(Joi.object().keys({ 
 
    a: Vogels.types.uuid(), 
 
    b: Joi.string(), 
 
    c: Joi.string(), 
 
    d: Joi.string().email() 
 
}))

を使用しています、以下に示すようにDynamoDBのスキーマを持っています

私は

var Obj = { 
 
    email: '[email protected]', 
 
    item: [{ 
 
     b: 'data', 
 
     c: 'some-data', 
 
     d: '[email protected]' 
 
    }] 
 
};
テーブルに次のデータを挿入しようとしています私は、テーブルにデータを挿入するには、以下のnodejsコードを使用してい

私は、次のエラー

errors.push(this.createError('object.child', { key, child: child.schema._getLabel(key), reason: result.errors }, localState, options)); 
 

 
TypeError: child.schema._getLabel is not a function

に取得しています

Model.create(Obj, function(err, data) { 
 
    if (err){ 
 
     console.log(err); 
 
     return cb(err); 
 
    } else { 
 
    \t console.log(data); 
 
    \t return cb(null,data); 
 
    } 
 
});

10誰かが私を助けたり説明したりすることができますか?なぜこのエラーが発生しているのですか?

+0

コードの最初のスニペットで、スキーマの最後に括弧がありません。 –

+0

@PatrickMotardスキーマのコードは表現目的のものにすぎませんでした –

答えて

1

問題はUUIDフィールド(属性 'a')にあります。ヴォーゲルは自動的にUUIDを生成するはずです。しかし、キー以外の属性の自動UUID値生成の実際の例はありませんが、生成する必要があるドキュメントごとにあります。キー属性のUUIDを定義する場合は正常に動作します。

UUIDを生成し、属性 'a'に値を割り当てるための回避策は次のとおりです。

1)

node install node-uuid 

2ノードUUIDモジュールをインストール)が必要追加: -

var nodeUUID = require('node-uuid'); 

3)後述のようにオブジェクトを変更: -

var Obj = { 
    email : '[email protected]', 
    item : [ { 
     a : nodeUUID.v1(), 
     b : 'data', 
     c : 'some-data', 
     d : '[email protected]' 
    } ] 
}; 

アイテムを正常に挿入できるはずです。私はそれをテストして、大丈夫です。

+0

ありがとう!出来た。 –

関連する問題