给出代码
express = require('express')
bodyParser = require('body-parser')
url = require('url')
app = express()
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.set 'port', process.env.PORT || 5000
app.use express.static(__dirname + '/public')
mongodb = require('mongodb')
mongojs = require('mongojs')
dbLocation = process.env.MONGOLAB_URI || 'mongodb://localhost/wesave-companion';
db = mongojs(dbLocation)
transactions = db.collection 'transactions'
transactions.ensureIndex({item_id: 1}, unique: true)
app.post '/transactions', (req, resp) ->
transaction = buildTransaction req.query
createTransaction transaction
resp.status = 200
resp.send 'ok'
createTransaction = (transaction, user) ->
transactions.insert transaction, (err, doc) ->
return err if err
return doc if doc
我通常希望基于mongodb文档,http://docs.mongodb.org/manual/reference/method/db.collection.ensureIndex/我的数据库不允许存在具有相同“item_id”键的多个记录,但事实并非如此。
我尝试将ensureIndex
方法编写为:
transactions.ensureIndex({item_id: 1}, {unique: true})
和
transactions.ensureIndex({"item_id": 1}, {unique: true})
和
transactions.ensureIndex({'item_id': 1}, {unique: true})
但显然,使用mongoshell,记录条目肯定是重复的。我在这里缺少什么?
有趣的是,如果我尝试将索引直接写入db,我会得到以下响应,我不知道如何解释。
我应该在哪个方向挖掘? THX。
答案 0 :(得分:1)
您没有任何重复项。您正在调用db.transactions.find()
,它会返回您收藏的全部内容。
它返回一个文档,这意味着您的集合只包含一个文档。
你要三次打电话,你会注意到,每次都会回复同样的事情。