我的目标是在我的集合的子集中拥有一个唯一的字段。特别是产品艺术中的序列号应该是唯一的。因此,如果艺术是不同的,那么可以有两个相似的序列号,但如果艺术是相同的,那么只有一个。
要检查我是否要使用mongoose pre middleware
(如果schema level
上没有更好的解决方案)。
ImplantModel = require('./implant.model.js')
...
implantSchema = mongoose.Schema({
art: {
type: String,
required: true
},
serialNr: {
type: String,
required: true
},
...
validateImplant = (data, next) ->
err = ""
if !data.art? || data.art == ""
err += "Keine Implantatbezeichnung vorhanden!\n"
if !data.serialNr? || data.serialNr == ""
err += "Keine Seriennummer vorhanden!\n"
return next err if err != ""
inspect ImplantModel
# ImplantModel.findOne({serialNr: data.serialNr, art: data.art}, (err, implantFound) ->
# return next err if err?
# return next "Eine Seriennummer darf nur einmlaig pro Hersteller angelegt werden!"
# return next null
# )
next
mongoose = require('mongoose')
implantSchema = require('./implant.schema.js').getSchema()
try
module.exports = mongoose.model('Implant', implantSchema)
catch err
module.exports = mongoose.model('Implant')
问题在于ImplantModel
当时似乎是{}
。我也尝试了this.constructor.findOne
,如How to query from within Mongoose pre hook in a Node.js / Express app?所述,它给了我findOne is not a function
我可以在调用.save
方法之前执行查询,但我想钩子会更好。