Я работаю над командным проектом. Я создал новую коллекцию с некоторыми записями (вставлен вручную). Есть ли какой-либо скрипт или код для вставки этих записей автоматически из кода, так что, когда мой коллега будет работать, им не нужно будет вставлять эти записи снова.
Код:
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var ServiceCategoryTypeSchema = new Schema({
_id: {type: String},
name:String
}, {
collection:'service_category_type',
timestamps:{createdAt:'created_at', updatedAt:'updated_at'}
}
);
module.exports = {
getModel: function(db){
return db.model("ServiceCategoryType", ServiceCategoryTypeSchema)
},
schema:ServiceCategoryTypeSchema
};
Это запись, я думаю добавить автоматически,
{
"_id" : "Inventory",
"name" : "Inventory"
}
{
"_id" : "Non-inventory",
"name" : "Non-inventory"
}
{
"_id" : "Service",
"name" : "Service"
}
Когда у вас есть ваша модель, скажем, в YourModel
, тогда вы сможете сохранить свои данные, которые у вас есть, скажем, yourData
примерно так:
new YourModel(yourData).save(function (error, data) {
// handle errors, log success etc.
});
Вы можете сделать это за столько данных, сколько хотите.
Когда вы заполняете базу данных некоторыми данными, может быть хорошей идеей сначала проверить, не заселена ли база данных.
Вот рабочая примерная программа, которая сохраняет такие данные - я изменил имена баз данных и коллекций, чтобы вы не путались с вашей реальной базой данных при ее запуске:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var P = mongoose.Promise = require('bluebird');
mongoose.connect('mongodb://localhost/poptest');
var TestModel = mongoose.model('TestModel', new Schema({
_id: String,
name: String
}, {
collection: 'testcollection',
timestamps: {createdAt: 'created_at', updatedAt: 'updated_at'}
}
));
var sampleData = [
{_id: "Inventory", name: "Inventory"},
{_id: "Non-inventory", name: "Non-inventory"},
{_id: "Service", name: "Service"}
];
P.all(sampleData.map(i => new TestModel(i).save()))
.then(() => console.log('Data saved'))
.catch((err) => console.log('Error: ' + err))
.finally(process.exit);
Для этого вам необходимо установить mongoose
и bluebird
:
npm i mongoose bluebird
Он создает 3 документа в poptest
данных poptest
на localhost. Вы можете проверить его, выполнив:
mongo poptest
и запрашивая testcollection
коллекции:
db.testcollection.find();
Вы должны получить что-то вроде:
> db.testcollection.find().pretty();
{
"_id" : "Inventory",
"updated_at" : ISODate("2016-09-14T16:13:37.374Z"),
"created_at" : ISODate("2016-09-14T16:13:37.374Z"),
"name" : "Inventory",
"__v" : 0
}
{
"_id" : "Non-inventory",
"updated_at" : ISODate("2016-09-14T16:13:37.377Z"),
"created_at" : ISODate("2016-09-14T16:13:37.377Z"),
"name" : "Non-inventory",
"__v" : 0
}
{
"_id" : "Service",
"updated_at" : ISODate("2016-09-14T16:13:37.377Z"),
"created_at" : ISODate("2016-09-14T16:13:37.377Z"),
"name" : "Service",
"__v" : 0
}