2013-02-23 30 views
2

我爲創建用戶模式和以下和追隨者MissingSchemaError:架構尚未註冊模式「用戶」時,填入

var UserSchema = new Schema({ 
created_at : { type: Date, default: Date.now } 
, name : String 
, hashedPass : String 
, salt: String 
, email : Email 
, avatar : {type: String, default: "images/default_profile.png" } 
, statuses_count : Number 
, screen_name : String 
, location : String 
, about : String 
, followers: [{ type: ObjectId, ref: 'Users' }] 
, following: [{ type: ObjectId, ref: 'Users' }] 
, followers_count : Number 
, following_count : Number 
}); 

,並建立按照用戶怎麼辦

UserSchema.statics.createFollowing = function(data, callback) { 
    console.log("data: ", data); 
    this.findOne({ 
     name : data.name 
    }, function(err, docs) { 
     if (err) 
      callback("error " + err) 
     else if (docs) { 
      docs.following.push({"_id" : data.name_follow});     
      docs.save(function(err) {      
          if (err) 
           callback(err); 
          console.log("___cxxx_____", this); 
          mongoose.model('User').findOne({ 
            _id : docs._id 
           }).populate('following', 'name screen_name avatar').exec(function(err, docs) { 
            if (err) 
             callback(err); 
            console.log('The creator is %s', docs.following) 
            callback(docs); 
           }); 
         }); 
     } 
    }); 
} 

當我要求如本

http://localhost:3000/auth/createfollowing?callback=jQuery16104670869295950979_1361607659796&{"name":"testuser1","name_follow":"envatowebdev","token":"ece20af054339bb52d4feee9a05ab8cc401f8dec6b622b8df1e4c0d1789825bee8dd47f572cdc737a098a5be03044596","device":"xphone"}&_=1361607667778 

我回到這樣的

Mongoose: users.findOne({ _id: ObjectId("5128781fcb8c95909c00000e") }) { fields: undefined, safe: undefined } 

/data/workspace/node/serverjs/node_modules/mongoose/lib/utils.js:397 
     throw err; 
      ^
MissingSchemaError: Schema hasn't been registered for model "Users". 
Use mongoose.model(name, schema) 
    at NativeConnection.Connection.model (/data/workspace/node/serverjs/node_modules/mongoose/lib/connection.js:597:11) 
    at model.populate [as _populate] (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:150:23) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:269:14) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at next (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:232:57) 
    at init (/data/workspace/node/serverjs/node_modules/mongoose/lib/model.js:215:12) 

我不知道爲什麼會這樣,以及如何填充以下內容和關注者。 預先感謝

回答

6

問題是在此模型是用戶,但我分配用戶 追隨者:[{類型:的ObjectId,參考文獻:'用戶'}]

1

對於那些使用MEAN.js,@ sepdau是正確的,但你必須添加一件事。例如,如果要創建一個字段爲Unicorns陣列的模型,則這將是正確的語法:

var StackOverflowSchema = new Schema({ 
    title: { 
     type: String, 
     default: 'StackOverflow', 
     trim: true, 
     required: 'Name cannot be blank' 
    }, 
    unicorns: [{ type: Schema.ObjectId, ref: 'Unicorn' }] 
}); 
相關問題