[question] Help with Storing
haziqfiqri opened this issue · 3 comments
Trying to update steam user to User schema if exist, otherwise create new steam user in mongodb. But got an error below, how do I solve this?
ValidationError: User validation failed: imageURL: Path `imageURL` is required., username: Path
`username` is required., profileURL: Path `profileURL` is required.
const UserSchema = mongoose.Schema({
username:{
type: String,
required: true
},
profileURL:{
type: String,
required: true
},
imageURL:{
type: String,
required: true
},
steamId:{
type: String,
required: true
}
});
const User = module.exports = mongoose.model('User', UserSchema);
const User = require('./models/user');
passport.use(new SteamStrategy({
returnURL: 'http://localhost:3000/auth/steam/return',
realm: 'http://localhost:3000/',
apiKey: 'XXXXXXXXXXXXXXXXXXXXXXXXXX'
},
function (identifier, profile, done){
var steamId = identifier.match(/\d+$/)[0];
var profileURL = 'http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' + 'apiKey' + '&steamids=' + steamId;
User.findOne({ steamId: steamId}, function(err, user){
if(user){
User.update({ steamid }, {
$set: profile
}, {
upsert: true
}, (err) => {
if (err) {
console.log(err);
}
});
}
else{
request(profileURL, function (error, response, body){
if (!error && response.statusCode === 200) {
var data = JSON.parse(body);
var profile = data.response.players[0];
var user = new User();
user.username = profile.personame;
user.profileURL = profile.profileURL;
user.profileImageURL = profile.avatarmedium;
user.steamId = steamId;
user.save(function(err){
done(err, user);
});
}
else{
done(err, null);
}
});
}
});
}));
Solved it, i think because my model schema are set to required:true. However in my views, steam username and steam image are not showing anything. I insert also the output of mongo shell after trying to login as new user.
extends layout
block content
h1 Steam Profile
br
img.img-thumbnail(src='#{user.imageURL}')
br
|
h5 Username: #{user.username}
h5 Id: #{user.steamId}
hr
"_id" : ObjectId("5da7a4a66910d33f74069d83"),
"steamId" : "76561198044179316",
"__v" : 0
Okay nvm, it was just typos. Sorry my bad, haven't sleep for awhile. Thanks!
Out of curiosity were you using Joi for input validation?
I know in recent versions Joi.validate is no longer a valid function,
I am going to be trying to setup something similar with mongoose, Joi, and express to track my communities bans as well as to check for VAC / Community bans on our community.