【问题标题】:Change Mongodb query result in place [duplicate]就地更改Mongodb查询结果[重复]
【发布时间】:2014-09-21 21:51:03
【问题描述】:

Restaurant 是 Mongoose 模型。我试图改变一些东西,但它不起作用:

  Restaurant.find({}, function(err, results) {
    for (var i = 0; i < results.length; i++) {
      delete results[i].__v;
  }

我认为results[i] 是一个模型对象。我试图用以下内容检查属性描述符,上面写着undefined

console.log(JSON.stringify(Object.getOwnPropertyDescriptor(results[i], '__v')));

为什么删除对象不起作用?我怎么看不到属性描述符?

编辑: 所以这是一个 Mongoose 文档。但是在 Javascript 的说法中,像 Mongoose 文档这样的对象可以基于 Javascript 对象以外的其他东西吗?一些基于内部 C 代码或其他东西的包装器?

【问题讨论】:

    标签: node.js mongoose


    【解决方案1】:

    results 不是 Javascript 对象,因此您不能使用 remove

    你可以用results.toObject()doc在Javascript对象中转换

    或者你可以这样做 Restaurant.find({},{lean:true}doc

    然后你就可以delete results[i].__v;

    【讨论】:

    • 如果不是JS对象实现的,是什么?
    • 启用了精简选项的查询返回的文档是纯 JavaScript 对象,而不是 MongooseDocuments。
    • 是的,谢谢你,我明白了。尽管用 Javascript 的说法,如果 Mongoose Document 不是一个 JS 对象,它又是什么对象呢?据我所知,JS 中的每个对象都是一种 JS 对象。你怎么做的东西不是?
    • {lean:true} 不起作用。它仍然不允许我添加或删除字段。
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 2019-02-10
    • 2018-11-08
    • 1970-01-01
    • 2021-01-17
    • 2020-08-28
    • 1970-01-01
    • 2015-02-03
    相关资源
    最近更新 更多