2015-06-15 17 views
7

Próbuję zbudować model komentarza zawierający: Odpowiedz i CommentThread. CommentThread zawiera odpowiedź, a Reply może sam się rekursować.Niepoprawna wartość schematu Ścieżka tablicy

/models/comment.js:

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var replySchema = new Schema({ 
    username: String, 
    timestamp: { type: Date, default: Date.now }, 
    body: String, 
    replies: [replySchema] 
}, {_id: true}); 

var commentThreadSchema = new Schema({ 
    title: String, 
    replies: [replySchema] 
}); 

var Reply = mongoose.model('Reply', replySchema); 
var CommentThread = mongoose.model('CommentThread', commentThreadSchema); 

module.exports = { 
    Reply: Reply, 
    CommentThread: CommentThread 
}; 

Mój komunikat o błędzie: Nieprawidłowa wartość dla ścieżki schematu Array 'odpowiada'. Nie można odpowiedziećSchema używać siebie jako typ wartości? Lub z innych powodów?

c:\Users\jacki_000\projects\invictusblog\node_modules\mongoose\lib\schema.js:297 

     throw new TypeError('Invalid value for schema Array path `'+ prefix + ke 
      ^
TypeError: Invalid value for schema Array path `replies` 
    at Schema.add (c:\Users\jacki_000\projects\invictusblog\node_modules\mongoos 
e\lib\schema.js:297:13) 
    at new Schema (c:\Users\jacki_000\projects\invictusblog\node_modules\mongoos 
e\lib\schema.js:87:10) 
    at Object.<anonymous> (c:\Users\jacki_000\projects\invictusblog\models\comme 
nt.js:4:19) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 
    at Module.load (module.js:355:32) 
    at Function.Module._load (module.js:310:12) 
    at Module.require (module.js:365:17) 
    at require (module.js:384:17) 
    at Object.<anonymous> (c:\Users\jacki_000\projects\invictusblog\services\com 
ment-service.js:1:83) 
    at Module._compile (module.js:460:26) 
    at Object.Module._extensions..js (module.js:478:10) 

Odpowiedz

10

https://searchcode.com/codesearch/view/6134527/

patrz przykład powyżej, trzeba zrobić coś jak

var replySchema = new Schema(); 
replyschema.add({ 
    username: String, 
    timestamp: { type: Date, default: Date.now }, 
    body: String, 
    replies: [replySchema] 
}); 
+1

Dzięki. To działa. Czy to dlatego, że przed użyciem replySchema, powinno to być zdefiniowane? – invictus

+1

Dzięki, miał ten sam problem podczas migracji ze starszej wersji mangusty. Problemem był sposób definiowania schematu. ".add" działało ładnie. – jmunsch

+0

To rozwiązuje problem, ale myślę, że jest całkowicie głupi !!! – dd619

Powiązane problemy