繁体   English   中英

猫鼬中的多个module.export

[英]Multiple module.export in mongoose

大家好,我对此有争议。 我在mlab上有2个集合,但是它们是同一个数据库。 所以我的问题是我的代码只保存1个集合。 这里可能是什么问题。

型号/user.js

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');

//User Schema
//authToken and isAuthenticated is for UserSchema of email-verification
var UserSchema = mongoose.Schema({
username:{
    type: String,
    unique: true,
    index:true
},
password:{
    type:String
},
email:{
    type:String,
    required: true
    // unique: true
},
authToken:{
    type: String,
    required: true,
    unique: true
},
IsAuthenticated:{
    type: Boolean,
    required: true
},
name:{
    type:String
},
field:{
    type:String
},
e_money:{
    type:Number //this is the integer form in mongoose
}
});


//accesible variable from the outside
var User = module.exports = mongoose.model('User', UserSchema);

//create the user
module.exports.createUser= function(newUser, callback){
bcrypt.genSalt(10, function(err,salt){
bcrypt.hash(newUser.password, salt, function(err, hash){
    //store hash in your password DB
    newUser.password = hash;
    newUser.save(callback);
});
});
}

模型/ infouser.js

var mongoose = require('mongoose');

//User Schema
var UserSchema = mongoose.Schema({
username:{
    type: String,
    unique: true,
    index:true
},
name:{
    type:String
},
field:{
    type:String
},
e_money:{
    type:Number //this is the integer form in mongoose
}
});


//accesible variable from the outside
var InfoUser = module.exports = mongoose.model('infouser', UserSchema);

//create the user
module.exports.createUser= function(newUser, callback){
    newUser.save(callback);
}

这就是我在route / users.js上称呼它们的方式

var User = require('../models/user');
var InfoUser = require('../models/infouser');

 var newUser = new User({
        name: name,
        email: email,
        authToken: authToken,
        IsAuthenticated: false,
        username: username,
        password: password,
        field: field,
        e_money: e_money //temporary emoney

    });

    var newUser2 = new InfoUser({
        name: name,
        username:username,
        field:field,
        e_money:e_money
    });

    InfoUser.createUser(newUser2,function(err,user){
        if(err) throw err;
        console.log(user);
    });

        //save the newly created user to database
    User.createUser(newUser,function(err, user){
        if(err) throw err;
        console.log(user);
    }

这两个数据仅保存在我的用户集合中。 我在这里想要的是将infouser数据保存在我的infouser集合中,并将我的users集合保存在我的users集合中

mmmm那个在模型上的creteUser函数真的很奇怪,因为您可以在那里传递任何模型的实例,它将调用自己的save函数。

为什么不直接调用save函数呢? (也许您可以用它消除范围界定问题):

像(带有承诺)的东西:

var User = require('../models/user');
var InfoUser = require('../models/infouser');

var newUser = new User({
  name: name,
  email: email,
  authToken: authToken,
  IsAuthenticated: false,
  username: username,
  password: password,
  field: field,
  e_money: e_money //temporary emoney
});

var newUser2 = new InfoUser({
  name: name,
  username:username,
  field:field,
  e_money:e_money
});

newUser.save()
  .then(function(user) {
    console.log(user);
  })
  .catch(function(e) {
    console.log(e);
  });

newUser2.save()
  .then(function(user) {
    console.log(user);
  })
  .catch(function(e) {
    console.log(e);
  });

在您的架构中添加集合属性。

var UserSchema = mongoose.Schema({...},{collection: 'collection_name'});

我当时在做一些愚蠢的事情。 我在heroku上推送了其他文件中的某些内容,因此这就是我的代码无法正常工作的原因。 谢谢大家,但我实际上做得很好。 上面的问题是正确的。 对不起

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM