0

问题

我的目标是在我的收藏子集中拥有一个独特的字段。特别是产品艺术中的序列号应该是唯一的。因此,如果艺术不同,则可能有两个相似的序列号,但如果艺术相同,则只有一个。

检查我是否想使用mongoose pre middleware(如果没有更好的解决方案schema level)。

种植体.schema.coffee

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这里提到的如何从 Node.js / Express 应用程序中的 Mongoose 预挂钩中查询?这给了我findOne is not a function

我可以在调用.save方法之前执行查询,但我想钩子会是更好的地方。

4

0 回答 0