我尝试编写一个将国家/地区插入mongoose数据库的程序。所有国家/地区都保存在xml文件中,并且是utf-8编码的。
首先,我从xml文件中读取所有国家/地区并将其保存在数组中。 countries数组看起来像这样
[ { 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' } ]
然后我用mongoose创建国家架构,看起来像这样
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);
然后,将所有国家/地区插入数据库,我保留在数组中。
现在我的问题是,当我多次执行我的程序时,我会在数据库中找到重复的实体吗?我将避免名称和iso的重复。
查看模式定义,我将字段iso和name定义为唯一:true,它会起作用吗?