【发布时间】:2019-08-02 14:08:52
【问题描述】:
我正在将模式从模型传递到控制器。我想在 MongoDB 中创建一个集合,作为发布后的特定 JSON 响应。
型号:-
const mongoose = require ('mongoose');
const bcryptt = require('bcryptjs');
const crypto = require('crypto');
var adminSchema = new mongoose.Schema({
companyName : {
type: String,
required: "Company name can't be empty.",
required: false
},
companyID: {
type: String,
unique: true
}
},
email : {
type: String,
required: "Email can't be empty.",
unique: true
},
password: {
type: String,
required: "First name can't be empty."
},
fullName : {
type: String,
required: "First name can't be empty."
}
});
mongoose.model('Admin', adminSchema);
所以我在这里使用companyName 在controller中创建compantID:-
module.exports.registerAdmin = (req, res, next) =>{
var admin = new Admin();
admin.companyName = req.body.companyName;
admin.email = req.body.email;
admin.password = req.body.password;
admin.fullName = req.body.fullName;
//comapny id generate
const reqq = crypto.createHash('md5').update(admin.companyName).digest('hex');
let valueNum = reqq.match(/\d/g).join("").toString().substring(0,6);
admin.companyID = valueNum;
console.log(valueNum);
admin.save((err, doc) =>{
if(!err){
res.send(doc);
//todo something here to generate collection from valueNum
}
else{
if (err.code == 11000)
res.status(422).send(["Entered duplicate email address. Please check"]);
else
return next(err);
}
});
}
所以我在valueNum 中得到companyID。在admin.save 上,我想在一些代码中传递valueNum 以创建任何唯一valueNum 将在现有数据库中的新集合。如果数据库中已存在特定 valueNum 的集合,则跳过。
这些都将发生在同一个 URL 命中。我得到的回应:-
{
"_id": "5c874d88497ed26f233ffad5",
"companyName": "Meta",
"email": "xyzt@test.com",
"fullName": "Aron",
"companyID": "14624",
}
我怎样才能做到这一点??
【问题讨论】:
-
我不明白你在这里想说什么。您要创建一个新的单独文档来保存 valueNum 的值,还是需要创建一个具有唯一 valueNum 的管理文档?
-
@TRomesh 不,我只是想在我现有的数据库中创建集合名称为
valueNum例如:我有valueNum数据为:“34500”。然后必须创建 34500 名称集合并继续。但如果已经找到 34500 名称集合,则跳过该函数。
标签: node.js mongodb express mongoose