将POST参数转换为mongoose模式

时间:2016-05-22 17:11:09

标签: node.js mongodb express mongoose

我最近一直在试验Mongoose和NodeJs,我很感激这里的一些帮助。我们假设我有一个Mongoose Schema,如下所示

var mongoose = require('mongoose');
var findOrCreate = require('mongoose-findorcreate')

var userSchema = mongoose.Schema({
    email: String,
    password: {type: String, default: ''},
    name: String,
    createdDate: {type: Date, default: Date.now},
    updatedDate: {type: Date, default: Date.now},
    rawDataFromOauth: {type: Array}
});
userSchema.plugin(findOrCreate);
var user = mongoose.model('user', userSchema);

module.exports = {
    user: user
};

我将发送一个POST请求,其中包含一个用户JSON对象,如下所示

{
    "email": "blahblah@gmail.com",
    "name": "i am blah blah",
}

Q1 有没有什么办法可以一次性将这个JSON转换为mongoose模式?目前我正在使用req.body.user.email,req.body.user.name等一个接一个地映射它,这真的很痛苦。

注意:实际情况有大约20多个变量。

Q2 我的目标是在这个Mongoose模型上使用https://github.com/drudge/mongoose-findorcreate提供的findOrCreate()。我试着做以下

new userModel.((req.body.user)).findOrCreate({email: req.user.email}, function (err, user){
//do some magic here
});

userModel.hydrate((req.body.user)).findOrCreate({email: req.user.email}, function (err, user){
//do some magic here
});

我碰到了这个错误

TypeError: (intermediate value).findOrCreate is not a function

TypeError: userModel.hydrate(...).findOrCreate is not a function

非常感谢任何帮助。

0 个答案:

没有答案