国をマングースデータベースに挿入するプログラムを作成しようとしています。すべての国は 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 として定義しています。うまくいくでしょうか?