2017-06-05 2 views
0

je le mongodb suivant/mangouste Schématouche Attribuer et variable sans nécessité d'attribuer au schéma

var forumReplySchema = new Schema({ 
    userid : String, 
    username: String, 
    forumid: {type: String, default: '1'}, 
    message: {type: String, default: ''}, 
    time: Number, 
}); 

module.exports = mongoose.model('forum_replies', forumReplySchema); 

avec requête suivante:

 forum_replies.findOne({forumid: forumid}).then(function (reply) { 
    currentReply.username = user.username; 
currentReply.rank = result.rank; 

}); 

Actuellement username est affecté parce que j'ai propriété nom d'utilisateur dans le Schéma. Rank n'est pas affecté parce que ce n'est pas dans le schéma.

Mais y a-t-il un moyen pour moi d'attribuer un rang, sans l'avoir défini dans le schéma? Editer: alias, assigner le rang à l'objet de réponses du forum sans avoir besoin de sauvegarder dans Db.

+0

est le classement d'une nouvelle propriété que vous souhaitez stocker dans db? –

+0

Non @SamipSuwal je veux juste stocker IT dans la liste des objets. Sans passer par db. Je veux juste stocker dans le même résultat – maria

Répondre

1

Vous ne pouvez pas ajouter de propriétés au document mongoose. Si vous voulez le faire, vous devrez d'abord le convertir en objet brut. Il y a deux façons de s'y prendre. Voici l'un d'entre eux.

reply.toObject(); 

Ensuite, vous pouvez ajouter des propriétés.

//you have currentReply in your code, I just want to show general idea here 
reply.rank = result.rank; 

Est-ce ce que vous cherchez?

Mise à jour:

Merci d'avoir accepté la réponse :). Regardez également dans l'option lean(), cela vous renvoie des objets JS simples sans que vous ayez à faire la conversion manuellement. Lean() a également un avantage de performance.

+0

Sans test, il semble que c'est ce que je suis pour, – maria