Voici ce que je l'ai faitMongoose sélectionner, enrichissez et enregistrer de se comporter différemment sur Mac et Windows
static populateReferralLinks(){
return Promise.coroutine(function*(){
let companies = yield Company.find({},'billing referral current_referral_program')
.populate('billing.user','emails name');
for(let i = 0 ; i < length ; i++){
companies[i].referral.is_created = true;
companies[i].referral.referral_email = companies[i].billing.user.emails[0].email;
companies[i] = yield companies[i].save();
}
return companies;
}).apply(this)
.catch((err) => {
throw err;
});
}
J'ai un funciton dans lequel je ne sélectionner que 3 champs pour aller de l'avant avec la facturation i.e., current_referral_program et d'orientation. Et de remplir l'utilisateur en utilisant la référence stockée dans billing.user. Maintenant, quand j'appelle cette fonction alors sur la ligne
entreprises [i] .save();
La commande suivante est affichée dans le terminal dans les fenêtres
Mongoose: companies.update(
{ _id: ObjectId("58d12e1a588a96311075c45c") },
{ '$set':
{ billing:
{ configured: false,
user: ObjectId("58d12e16588a96311075c45a") },
referral:
{ is_created: true,
referral_email: '[email protected]',
},
updatedAt: new Date("Wed, 22 Mar 2017 12:02:55 GMT")
}
}
)
Mais dans le terminal de Mac, il montre cette commande
Mongoose: companies.update({ _id: ObjectId("58d12e1a588a96311075c45c") }) { '$set': { billing: { configured: false, user: ObjectId("58d12e16588a96311075c45a") }, current_limit: {}, current_usage: {},referral: { is_created: true, referral_email: '[email protected]'}}, '$unset': { updatedAt: 1 } }
Maintenant, je ne l'ai pas mentionné CURRENT_LIMIT et current_usage être vide. vide s'exécutant correctement sur les fenêtres mais sur Mac, il règle current_limit et current_usage empty met donc à jour mon document avec des objets vides sur Mac mais pas sur Windows.
Il devrait se comporter de la même manière sur les deux OS mais ce n'est pas le cas.