Mongoose/MongoDB 如果不存在则基于 Schema 创建集合
Posted
技术标签:
【中文标题】Mongoose/MongoDB 如果不存在则基于 Schema 创建集合【英文标题】:Mongoose/MongoDB Create Collection if not exists based on Schema 【发布时间】:2017-04-29 01:01:49 【问题描述】:如果集合不存在,我想创建一个集合,并用 Mongoose Schema 中的预设默认值填充它。
这个想法是在第一次运行时创建并填充一个数据库,如果它已经存在,则什么也不做。
我有一个可行的解决方案,但我想知道是否有更好的方法,这是我的解决方案:
settings.js (Schema)
var mongoose = require('mongoose');
// define the schema for our account data
var settingsSchema = mongoose.Schema(
cmdPrefix : type:String, default: '!',
fontColor: type: String, default:'<font color=\'#89D2E8\'>',
loggedOn: type:Date, default:Date.now
,timestamps : true);
// methods ======================
// create the model and expose it to our app
module.exports = mongoose.model('Settings', settingsSchema);
start.js(Start File)
const Settings = require('./config/models/settings.js');
...
mongoose.connect('mongodb://localhost/testdb'); // connect to our database
settingsExists();
...
function settingsExists()
Settings.find(,function(err, result)
if (result.length > 0)
console.log('found ' + result);
else
console.log('not found, creating');
let newSettings = new Settings();
newSettings.save();
);
【问题讨论】:
【参考方案1】:朋友喜欢这样
if (!mongoose.models.Settings)
mongoose.model('Settings', settingsSchema);
module.exports = moongose;
【讨论】:
以上是关于Mongoose/MongoDB 如果不存在则基于 Schema 创建集合的主要内容,如果未能解决你的问题,请参考以下文章
$gte 和 $lte 在 Mongoose/MongoDB 中没有按预期工作
将图像文件从 React 前端上传到 Node/Express/Mongoose/MongoDB 后端(不工作)
Mongoose/Mongodb 数据库调用以不一致的顺序返回数据