2016-12-14 63 views
1

我一直在開發一個node.js應用程序。我想一個音階,其中有一個名字和一些相關的注意事項型號:Node.js + Mongoose中的基本建模

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var scaleSchema = new Schema({ 
    name: String, 
    displayName: String, 
    notes: [{type: String}] 
}); 

module.exports = mongoose.model('Scale', scaleSchema); 

不過,我不知道如何「種子」,甚至進入這一模式。我想用一些只能裝入一次的秤來填充它。我知道我可以要求這個模型,並使用new來創建新的條目,但是我必須將它放入節點應用程序的特定部分嗎?是否有某種最佳實踐可供使用?我做錯了嗎?

我在這裏很困惑,但感覺好像我幾乎掌握了它的工作原理。有人能指引我朝着正確的方向嗎?

回答

2

您可以像創建對象一樣創建新的數據庫條目。這裏是一個播種機類。

let mongoose = require('mongoose'), 
    User = require('../models/User'); 

    module.exports =() => { 

    User.find({}).exec((err, users) => { 
     if (err) { 
      console.log(err); 
     } else { 
      if (users.length == 0) { 
       let adminUser = new User(); 
       adminUser.username = 'admin'; 
       adminUser.password = adminUser.encryptPassword('admin'); 
       adminUser.roles = ['Admin']; 
       adminUser.save(); 

       console.log('users collection seeded') 
      } 
     } 
    }); 
}; 

然後在另一個文件中,你可以調用它,它會播種你的數據庫。

let usersCollectionSeeder = require('./usersCollectionSeeder');  
usersCollectionSeeder(); 

希望這會有所幫助。

至於結構,我喜歡有一個名爲「播種機」的文件夾。在那裏我有一個名爲databaseSeeder.js的文件,它需要像usersCollectionSeeder.js這樣的其他播客,然後調用函數。

這是我喜歡使用的示例結構。

https://github.com/NikolayKolibarov/ExpressJS-Development

0

您可能想要查看.create()a mongoose function

我不知道這是否是這樣做的唯一途徑,但你可能要像

Scale.create({name: varThatHasValName, 
      displayName: varThatHasValdisplayName, 
      notes: varThatHasValnotes}, function (err,scale)); 

添加類似

var Scale = mongoose.model("Scale", scaleSchema); 
module.exports = Scale; //instead of what you currently have for you last line 

然後,你可以做一些事情在另一部分的代碼,當你想創造一個新的規模。

我最近使用了一個類的節點和貓鼬,但我不是專家,但這可能是我會做的(如果我理解你的問題)。