2014-10-22 3 views
1

Я пытаюсь создать плагин CreatedBy Mongoose, но при попытке использовать ObjectId в качестве типа поля, который он мне дает ("account" это еще один определенный коллекции уже):Добавление поля в плагин Mongoose дает «TypeError: Недопустимое значение для пути схемы« CreatedBy.type »

TypeError: Invalid value for schema path `CreatedBy.type` 

& здесь код плагина:

mongoose = require 'mongoose' 
module.exports = exports = updatedByPlugin = (schema, options) -> 
    schema.add CreatedBy: 
    type: mongoose.Schema.Types.ObjectId 
    ref: "account" 
    schema.pre "save", (next) -> 
    @CreatedBy = options.accountId 
    next() 
    return 

    schema.path("CreatedBy").index options.index if options and options.index 
    return 

Так как я могу изменить значение ref, чтобы заставить его работать?

+0

Вы должны пометить его соответствующим тегом языка (coffeescript?). – royhowie

+0

Но это не имеет никакого отношения к Coffeescript, если код был написан на JavaScript, он мог бы сделать то же самое – AbdelHady

+1

Итак, вопрос о указателях на C должен быть помечен только указателями, а не C? Если бы это было написано на C++, это может быть одна и та же проблема. Цель состоит в том, чтобы максимально использовать сеть. Кто-то, кто следует за сценами кофе и тегами мангуста, скорее всего, поможет вам легче, чем кто-то, кто следует за JS и мангуста. Изменение синтаксиса требует немного умственной перестройки. Ваше решение может даже иметь отношение к тому, как компилируется скрипт кофе, хотя более вероятно, что вы изменили что-то еще на этом пути. (Все мои модели JS mongoose имеют тип then objectId.) – royhowie

ответ

2

Ну, вы не поверите, но я решил ее путем добавления CreatedBy полю таким образом

schema.add CreatedBy: 
    ref: "account" 
    type: mongoose.Schema.Types.ObjectId 

Да, просто обмениваясь 2 линии для ref & type !! , Странно, как обмен этими двумя строками может сломать код: | !!!

+1

Тем не менее, в 2018 году это решение. –