node.js - Mongoose: assign field of type 'array of Strings' -



node.js - Mongoose: assign field of type 'array of Strings' -

i'm using array of strings save emails:

var user = new schema({ // other fields... emails: [string] });

have troubles updating field. say, email1 , email2 values receive view: works well:

user.emails = [email1, email2]; user.save(); // fields updated,

and doesn't:

user.emails[0] = email1; user.emails[1] = email2; user.save(function(err, saveduser) { console.log(saveduser.emails); // updated array [email1, email2] // if retrieve user, 'emails' field not have above changes. });

but, strangely, works:

user.emails = [email1]; user.emails[1] = email2; user.save(); // user.emails == [email1, email2];

can explain why happening?

it's not documented, when manipulating array fields need create sure you're triggering mongoose's field alter detection knows array has been modified , needs saved.

directly setting array element via index in square brackets doesn't mark modified have manually flag using markmodified:

class="lang-javascript prettyprint-override">user.emails[0] = email1; user.markmodified('emails');

or can in 1 go, using set method of mongoose array:

class="lang-javascript prettyprint-override">user.emails.set(0, email1);

overwriting entire array field triggers why works you:

class="lang-javascript prettyprint-override">user.emails = [email1, email2];

as as:

class="lang-javascript prettyprint-override">user.emails = [email1]; user.emails[1] = email2;

which means works:

class="lang-javascript prettyprint-override">user.emails = []; user.emails[0] = email1; user.emails[1] = email2;

node.js mongodb express mongoose

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -