为新项目安装生成不带数据的mongodb模式

6ss1mwsb  于 2023-01-08  发布在  Go
关注(0)|答案(1)|浏览(76)

我在nodejs中有一个项目,使用mongodb数据库,我想为另一个客户创建一个全新的项目部署,所以我需要相同的数据库结构,没有旧数据。我应该怎么做?我必须手动创建所有集合,还是有一种方法可以只编写数据库模式的脚本?

vohkndzv

vohkndzv1#

我总是喜欢使用MVC模式。
我将与您分享我的模型文件中的一个,以了解如何编写可重用的数据库模式代码。

const expenseCollection = require('../db').db().collection("expenses");
const ObjectID = require('mongodb').ObjectID
const Money = require('./Money')

let Expense= function(data, userId){
    this.data = data,
    this.authorId = new ObjectID(userId)
    this.errors =[]
    }

//MAZZA BELOW ARE THE FIELDS MENTIONED THAT YOU MAY WANT TO HAVE IN YOUR SCHEMA
Expense.prototype.cleanUp = function(){
    this.data ={
        amount: Number(this.data.amountSpent),
        item: this.data.item,
        purchaseDate: new Date(this.data.purchaseDate),
        notes: this.data.notes,
        status: false,
        expType: this.data.expType,
        authorId : this.authorId,

    }
}

模块导出=费用
另外,我将与你分享如何在这个构造函数中传递数据。(来自控制器文件的一个)

const moneyController = require('./moneyController')
const Expense = require('../models/Expense')

exports.saveExpense = async function(req, res){
   
        let data = {
        balance:0,
        }
        let money = new Money(data)
    await  money.addMoney(req.session.user_id)
await money.subtractBal(req.body.amountSpent, req.session.user._id )

//MAZZA FOCUS ON THE BELOW LINE:
    let expense = new Expense(req.body, req.session.user._id)


await expense.saveExpense()
res.redirect('/')

}

首先,模型将是一个文件,您可以在其中编写可重用的模式脚本。
考虑为每个集合创建单独的模型,即1个集合=代码中的1个新模型。
另外,在我与您分享的上述代码中,即使mongodb中还不存在集合,它也会自动创建集合。

相关问题