Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

mongodb - Is data returned from Mongoose immutable?

I want to add to the return data from a mongoose query:

User.findById(userId, function(err, data) {
  if (!err) {
    data.newvar = 'Hello, world';
  }
});

However, when I console log the output, the newvar does not exist. I've also tried this using Underscore's extend:

_.extend(data, {'newvar': 'Hello, world'});

With no luck either. Since I have nested documents, using a shallow copy won't work. Is there any way to append data here?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

One way to handle this is to convert your mongoose model instance into a plain object that you have full control over by calling toObject() on it:

User.findById(userId, function(err, data) {
  if (!err) {
    data = data.toObject();
    data.newvar = 'Hello, world';
  }
});

If you want a more structured solution, you can add virtual attributes to your schema as described here.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...