JavaScript将属性附加到对象

时间:2015-08-30 22:38:45

标签: javascript object append

我可能忽略了最简单的解决方案,但我已尝试过任何我能想到的或在互联网上找到的东西。

我正在尝试向我的输出中需要的JSON对象添加属性。但无论我尝试添加属性,它都不会显示在我的对象中。我确认'doc'变量是一个实际的对象。

没有控制台错误。 Console.log()显示'doc'对象的内容,仅此而已。

任何人都知道发生了什么事?

Blog.findOne({'slug': req.params.slug}, function(err, doc) {

  if (!err){

    if(_.isEmpty(doc)) { res.status(404).json({ response: "Nothing found here." }); } else {

      var blogPost = doc;
      blogPost.someProperty = 'test';
      console.log(blogPost); // doesn't contain new property

      res.status(200).json( { response: blogPost });

     }

   } else { throw err; }

 });

blogPost / doc

的输出
{
  "response": {
    "_id": "55e31854823389ec1f5506fc",
    "title": "A sample post.",
    "slug": "a-sample-post2",
    "body": "Hello world. This is a sample post. \n\nThis should be a new paragraph.",
    "__v": 0,
    "date": "2015-08-30T14:51:00.836Z"
  }
}

浏览器中这样的简单测试确实有效。所以我真的很困惑为什么它在我的NodeJS应用程序中不起作用。与回调/异步或其他什么有关?

var test = {}; 
test.prop = "test"; 
console.log(test);
Object {prop: "test"}

1 个答案:

答案 0 :(得分:1)

如果您希望将结果设为lean,则应使用object功能。

您甚至可以稍微重新格式化代码以消除缩进级别。

Blog.findOne({'slug': req.params.slug}).lean().exec(function(err, doc) {

    if (err){
      throw err;
    }

    if(_.isEmpty(doc)) { 
       res.status(404).json({ response: "Nothing found here." }); 
       return;
    }

    // else is not required
    var blogPost = doc;
    blogPost.someProperty = 'test';

    res.status(200).json( { response: blogPost });
 });