【问题标题】:How to fetch individual properties of a mongoose Model?如何获取猫鼬模型的各个属性?
【发布时间】:2012-12-27 02:29:14
【问题描述】:

读完 The Little MongoDB 这本书后,我今天才开始玩猫鼬。我对此很陌生,到目前为止,我已经知道如何从 mongoose 查询我的集合并根据它们的属性查找文档,但我想知道的实际上是如何为每个文档只显示文档的一个属性例如,在 Express res.send() 中的集合。就像一个学习实验,如果你愿意的话。

我已经在 CoffeeScript 中编写了这个 sn-p:

express = require 'express'
app = express()
http = require 'http'
server = http.createServer app
mongoose = require 'mongoose'

mongoose.connect 'localhost', 'linkreferrers'

# ## Ignore these configurations for now
# app.configure ->
#   app.set 'views', __dirname + '/views'
#   app.set 'view engine', 'jade'

linkSchema = new mongoose.Schema {
    referer: 'string'
}

Link = mongoose.model 'Link', linkSchema

app.get '/', (req, res) ->
    # Fetch the HTTP Referer from the visitor's browser, store it in the database, display a list of referers
    refererdata = req.get 'Referer'
    if refererdata?
        link = new Link {referer: refererdata}
        do link.save
    Link.find (err, links) ->
        console.log err if err
        res.send links

server.listen 5000

这会将以下数据发送到用户的浏览器:

[
  {
    "referer": "http://fiddle.jshell.net/_display/",
    "_id": "50f0fdcb75d2543b38000001",
    "__v": 0
  },
  {
    "referer": "http://fiddle.jshell.net/_display/",
    "_id": "50f18b0c95e3182a3a000001",
    "__v": 0
  },
  {
    "referer": "http://fiddle.jshell.net/_display/",
    "_id": "50f18b58040ac5413a000001",
    "__v": 0
  }
]

如何仅将每个文档的 referer 参数发送到浏览器?我尝试将links 替换为links.referer,但这会发送undefined。有时它会抛出一个错误,指出链接没有“引用者”属性。我已经坚持了几个小时了......

【问题讨论】:

    标签: node.js coffeescript express mongoose


    【解决方案1】:

    find 的第二个参数允许您选择要包含的字段。尝试将该行替换为:

    Link.find {}, '-_id referer', (err, links) ->
    

    _id 必须使用 - 前缀明确排除,但其余字段是可选的。

    【讨论】:

    • 非常感谢。我在学习 MongoDB 时读到了这一点,但当我被介绍给 Mongoose 时,它​​一定让我忘记了。我猜我不知所措,但非常感谢您在任何情况下的澄清!
    • 这个答案似乎有效,但是这个解决方案和下面的解决方案有区别吗?:stackoverflow.com/questions/31650258/…
    • @AlexMills 不,只有两种不同的字段选择语法。字段选择参数使用与Query#select方法相同的格式。
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2020-08-25
    • 2011-11-14
    • 2018-06-08
    • 2014-11-08
    • 1970-01-01
    • 2020-06-29
    • 2012-01-14
    相关资源
    最近更新 更多