我的mongoose有一个奇怪的行为,似乎在保存我的模式后关闭数据库连接会删除它。
这是我的架构brand.js:
var brandSchema = new db.Schema({
id: {type: String, required: true, index: {unique: true}},
products: [String]
});
我执行以下脚本来填充我的数据库(重要的精度:在执行脚本之前,我的品牌表没有在数据库中定义):
var async = require('async');
//Get config
var middlewares = require('./middlewares');
var config = require('./config');
//Load model
require('./models/brand');
var db = middlewares.db(config);
// Load brand.json
var brands = require('./brands.json');
// Save each brand in the database
async.each(Object.keys(brands), function(brandId, callback){
var brand = new Brand({id: brandId, products: brands[brandsId]);
brand.save(function(err){
if(err) console.log(err);
else console.log('brand ' + brand.id + ' added');
callback();
});
}, function(){
//Properly close the connection so the script can terminate
db.connection.close();
});
此脚本提供以下日志:
Mongoose: brand.ensureIndex({ id: 1 }) { safe: undefined, background: true, uni
que: true }
Mongoose: brand.insert({ __v: 0, products: [ 'phone', 'tv'], _id: ObjectId(
"54524f612245da0c2f0d2ba7"), id: 'samsung' }) {}
Mongoose: brand.insert({ __v: 0, products: [ 'food', 'beverages' ], _id: ObjectId(
"54524f612245da0c2f0d2ba8"), id: '' }) {}
日志的第一行表明使用正确的参数创建了索引ID。但是当我查看数据库时,我的品牌已经保存,但品牌架构是空的。但是,如果我删除了db.connection.close(),则仍会保存品牌,并保存架构,如Brand中所定义。
我真的不明白为什么。可能是因为没有发送到db的缓冲数据吗?