Zdefiniowałem schemat użytkownika Mongoose:
var userSchema = mongoose.Schema({
email: { type: String, required: true, unique: true},
password: { type: String, required: true},
name: {
first: { type: String, required: true, trim: true},
last: { type: String, required: true, trim: true}
},
phone: Number,
lists: [listSchema],
friends: [mongoose.Types.ObjectId],
accessToken: { type: String } // Used for Remember Me
});
var listSchema = new mongoose.Schema({
name: String,
description: String,
contents: [contentSchema],
created: {type: Date, default:Date.now}
});
var contentSchema = new mongoose.Schema({
name: String,
quantity: String,
complete: Boolean
});
exports.User = mongoose.model('User', userSchema);
parametr friends jest zdefiniowany jako tablica identyfikatorów obiektów. Innymi słowy, użytkownik będzie miał tablicę zawierającą identyfikatory innych użytkowników. Nie jestem pewien, czy jest to właściwa notacja, aby to zrobić.
Próbuję wypchnąć nowego znajomego do tablicy znajomych bieżącego użytkownika:
user = req.user;
console.log("adding friend to db");
models.User.findOne({'email': req.params.email}, '_id', function(err, newFriend){
models.User.findOne({'_id': user._id}, function(err, user){
if (err) { return next(err); }
user.friends.push(newFriend);
});
});
jednak daje mi to następujący błąd:
TypeError: Object 531975a04179b4200064daf0 nie ma metody „cast”
[{"$oid": "dfdfsdfsg565ls"},...]
zamiast["hkugh87tgkgk", ....]
populate()
dokładnie robi?Sam jestem nowy w Mongoose, więc nie jestem do końca pewien, czy to prawda. Wygląda jednak na to, że napisałeś:
Uważam, że nieruchomość, której szukasz, znajduje się tutaj:
Możliwe, że dokumenty uległy zmianie od czasu opublikowania tego pytania. Przepraszam, jeśli tak jest. Aby uzyskać więcej informacji i przykładów, zobacz dokumentację Mongoose SchemaTypes .
źródło
Spróbowałbym tego.
lub
ale nie jestem pewien, czy to prawda.
źródło