大家好,我有这个问题。我在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);
}
这就是我在我的路线/ 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集合上,我的用户集合保存在我的用户集合
答案 0 :(得分:2)
mmmm模特上的creteUser函数真的很奇怪,因为你可以传递任何模型的实例,它会调用自己的保存函数。
为什么不直接调用保存功能呢? (也许你可以消除范围问题):
像(有承诺)的东西:
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);
});
答案 1 :(得分:0)
在架构中添加集合属性。
var UserSchema = mongoose.Schema({...},{collection: 'collection_name'});
答案 2 :(得分:0)
我做了一些愚蠢的事。我在heroku上推送了一些不同文件中的内容,这就是为什么我的代码无效。谢谢大家,但我实际上做得很好。上面的问题是正确的。对不起