2

ユーザーとフォロワーを作成するためのモデルを作成します

    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)

なぜそれが好きなのか、フォロワーとフォロワーをどのように取り込むのかわかりません。少し早いですがお礼を

4

2 に答える 2

6

問題はここでモデルはユーザーですが、ユーザーのフォロワーを割り当てました: [{ type: ObjectId, ref: 'Users' }]

于 2013-02-23T10:54:46.240 に答える
1

MEAN.js を使用している場合、@sepdau は正しかったのですが、もう 1 つだけ追加する必要があります。たとえば、Unicorns の配列であるフィールドを持つモデルを作成する場合、これは正しい構文になります。

var StackOverflowSchema = new Schema({
    title: {
        type: String,
        default: 'StackOverflow',
        trim: true,
        required: 'Name cannot be blank'
    },
    unicorns: [{ type: Schema.ObjectId, ref: 'Unicorn' }]
});
于 2014-07-02T19:32:20.550 に答える