【发布时间】:2012-02-10 06:58:16
【问题描述】:
我正在使用 node 和 express 开发 REST API。我正在使用 mongoose.js,并且正在我的数据库中创建一个新的用户文档。没有汗水,效果很好。
当我想向 .save() 返回的 json 对象添加属性时,就会出现问题。我想在保存后添加此属性,因为它是使用 REST 接口的客户端的标志,但我不想保存到数据库中。
这是我的例子:
var _ = require('underscore');
var user = new User({"username" : "Joe"});
user.save(function(err, newuser){
if (err) return next(err);
var nu = _.clone(newuser);
nu.newbie = 'true';
res.send(JSON.stringify(nu));
});
这是一个示例响应(这是 nu 中的内容):
{
"username": "Joe",
"_id": "4f343383a5503c452a000002",
}
如您所见,我正在尝试添加属性nu.newbie 并将其设置为true,但它不起作用。我相信这是某种范围或参考问题。有什么想法吗?
【问题讨论】:
-
你能举一个反应不好的例子吗?不工作是指完全缺少属性“新手”还是仅缺少值? 'newuser' 的其余部分是否做出回应?
-
看不出它不应该工作的任何原因(尽管你不需要引用
true,除非你真的打算将它编码为字符串“true”) -
@XHR 将示例响应添加到原始帖子中。新手完全失踪了。
-
@Flambino 对,true 不需要引号,这对这个测试并不重要。
-
代码看起来不错,我可以让它在我的环境中工作。您确定混乱不在其他地方吗?请注意,您也可以使用 _.defaults 在一行中执行此操作。 documentcloud.github.com/underscore/#defaults
标签: node.js clone express mongoose underscore.js