有熟悉mongoose的么?求教
发布于 2年前 作者 zzswang 1338 次浏览

我最近用mongoose从mongodb取数据遇到下面这样的问题,求高手解答。

Order.find(query, function(err, orders) {
  if(err) console.log(err);
  orders.forEach(function(order){
    order.friendly_date = dateUtil.format_date(order.date, true);
  });
  res.send(orders);
});

这里我发现friendly_date 根本写不进去,传到页面上的orders里 压根没这个key。这是为什么呢?我看nodeClub也这样用,为什么它就可以?

多谢多谢

5 回复

貌似mongose不能赋值schame中没有的,可以先复制出来,再赋值。 clone()

多谢 是的我现在就是这么做的,我用的是 var orderJson = order.toObject(). orderJson.xx = xx; 感觉有点麻烦。

实际上我察看了一下,如果直接给order.friendly_date赋值的话,内存里也能看到,就是res.send(model)貌似调用了model的什么方法,不会直接把model的属性拷贝出来。

可以考虑用虚拟属性吧

vitual path来代替吧,避免每个逻辑里面都去做赋值操作。

用虚拟属性,没有定义的属性是不会写进去的。虚拟属性的好处就是写不进数据库~还能让你想用就用

回到顶部