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 数据库调用以不一致的顺序返回数据

HSQLDB 如果不存在则插入,如果存在则更新

Mongoose/mongoDB 查询加入.. 但我来自 sql 背景

Mongoose/mongoDB 查询加入.. 但我来自 sql 背景