【发布时间】:2017-02-03 17:13:43
【问题描述】:
我可以在 mongodb 集合中添加新参数,这些参数未在 mongoose 模式中定义吗? 这是我的架构
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var UsersSchema = new Schema({
FirstName : {
type : String
},
LastName : {
type : String
},
ProfileName : {
type : String
},
EmailID : { //This may actually take Phone Number depending on user account.
type : String,
required : true
},
Login : {
type : { enum : ['Facebook', 'Gmail', 'Custom'] },
required : true
},
ContactNumber :
{
type : Number
},
Address : { //Add Geo co-ordinates location later.
type : {}
},
ProfilePic : {
type : String //URL to image
},
Birthday : {
type : {}
},
Gender : {
type : { enum : ['Male', 'Female']}
},
CreatedDate : {
type: Date,
default: Date.now
},
ModifiedDate : {
type: Date,
default: Date.now
},
LastLogin : {
type: Date,
default: Date.now
}
});
module.exports = mongoose.model('Users', UsersSchema);
我想添加一些参数,例如 EmailVerified 和 MobileNumberVerified 这是我在 mongodb 中实际插入数据的路由代码
router.post('/api/signup',function(req,res){
console.log("Registering user");
var user = new Users();
user.FirstName = req.body.FirstName;
user.LastName = req.body.LastName;
user.EmailID = req.body.EmailID;
user.Login = "Custom";
user.Password = req.body.Password;
user.ProfileName = req.body.FirstName + " " +req.body.LastName;
// user.Birthday =
user.Address = req.body.Address;
user.Gender = req.body.Gender;
user.EmailVerified = false; // dynamic parameter
user.MobileNumberVerified = false; // dynamic parameter
// user.ContactNumber = req.body.ContactNumber;
user.save(function(err,user){
if(err){
console.log(err);
res.json(err);
}else{
console.log("User Registered");
res.json({result : 1});
}
});
});
但在 mongodb 中这些字段不存在。我认为猫鼬不允许动态添加参数。
【问题讨论】:
-
你应该使用 mongoose virtuals mongoosejs.com/docs/2.7.x/docs/virtuals.html
-
谢谢@styopdev。
Users.set("EmailVerified", false);对我来说工作得很好。
标签: node.js mongodb express mongoose