1

The Little MongoDBの本を読んだ後、今日マングースで遊び始めました。これまでのところ、マングースからコレクションを照会し、そのプロパティに基づいてドキュメントを検索する方法は既に知っていますが、実際に知りたいのは、ドキュメントごとにドキュメントのプロパティを 1 つだけ表示する方法です。たとえば、Express res.send() 内のコレクション。必要に応じて、学習実験として。

このスニペットを CoffeeScript でコーディングしました。

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. リンクに 'referer' プロパティがないというエラーがスローされることがあります。私はこれで数時間立ち往生しています...

4

1 に答える 1

3

2 番目のパラメーターをfind使用すると、含めるフィールドを選択できます。その行を次のように置き換えてみてください。

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

_idプレフィックスで明示的に除外する必要があります-が、残りのフィールドはオプトインです。

于 2013-01-12T18:10:45.390 に答える