Vérifiez cet exemple de code, il devrait fonctionner selon vos besoins.
Je ne vois ici aucune partie non compréhensible.
Posez des questions dans les commentaires, je peux expliquer si vous ne comprenez pas.
var tokenSchema = mongoose.Schema({
owner: {
type: 'String',
required: true,
index: {
unique: true
}
},
token: {
type: ['String'],
default: []
}
});
var Token = module.exports = mongoose.model('tokens', tokenSchema);
//save token, if token document exist so push it in token array and save
module.exports.saveToken = function(owner_id, token, callback){
Token
.findOne({owner: owner_id})
.exec(function(err, tokenDocument) {
if(tokenDocument) {
if(tokenDocument.token.indexOf(token) > -1) { // found that token already exist in document token array
return callback(null, tokenDocument); // don't do anything and return to callback existing tokenDocument
}
tokenDocument.token.push(token);
tokenDocument.save(callback);
return; // don't go down, cuz we already have a token document
}
new Token({owner: owner_id, token: [token]}).save(callback); // create new token document with single token in token array
});
}
//get all tokens by owner_id
module.exports.getAllTokens = function(owner_id, callback){
Token
.findOne({owner: owner_id})
.exec(function(err, tokenDocument) {
callback(err, tokenDocument.token);
});
}