0

国をマングースデータベースに挿入するプログラムを作成しようとしています。すべての国は xml ファイルに保存され、utf-8 でエンコードされます。

まず、xml ファイルからすべての国を読み取り、配列に保持します。国の配列は次のようになります

[ { language: 'en', iso: 'WF', name: 'Wallis and Futuna' },
{ language: 'en', iso: 'EH', name: 'Western Sahara' },
{ language: 'en', iso: 'YE', name: 'Yemen' },
{ language: 'en', iso: 'ZM', name: 'Zambia' },
{ language: 'en', iso: 'ZW', name: 'Zimbabwe' },
{ language: 'en', iso: 'AX', name: 'Åland Islands' } ]

そして、マングースで国のスキーマを作成すると、次のようになります

var mongoose = require('mongoose');
var mongoOptions = { db: { safe: true } };
var Schema = mongoose.Schema;

// Database connect
var uristring =
    process.env.MONGOLAB_URI ||
    process.env.MONGOHQ_URL ||
    'mongodb://localhost/townspeech';

mongoose.connect(uristring, mongoOptions, function (err, res) {
    if (err) {
        //console.log('ERROR connecting to: ' + uristring + '. ' + err);
    } else {
       //console.log('Successfully connected to: ' + uristring);
    }
});

// Country schema   
var CountrySchema = new Schema({
    language: { type: String, required: true, index: true },
    iso: { type: String, required: true, index: { unique: true } },
    name: { type: String, required: true, index: { unique: true } },
}, { autoIndex: false });


module.exports = mongoose.model('Country', CountrySchema);  

その後、配列に保持していたすべての国をデータベースに挿入します。

私の質問は、プログラムを何度も実行すると、データベースに重複するエンティティが見つかるかどうかです。name と iso の重複は避けます。

スキーマ定義を見てください。フィールド iso と name を unique:true として定義しています。うまくいくでしょうか?

4

0 に答える 0