EAR*_*ram 2 javascript mongoose mongodb node.js express
我知道在这里嵌入通常是答案,但是我有一个特殊情况。
如果我用实例的自定义方法调用另一个模型,它似乎会失败。
我得到的错误:
Fish.find is not a function at model.UserSchema.methods.fishes
Run Code Online (Sandbox Code Playgroud)
Fish模型被制成模型:
// Require mongoose to create a model.
var mongoose = require('mongoose'),
User = require('./user.js');
// Create a schema of your model
var fishSchema = new mongoose.Schema({
name: String,
category: String,
user: { type: mongoose.Schema.Types.ObjectId, ref:'User' }
});
// Create the model using your schema.
var Fish = mongoose.model('Fish', fishSchema);
// Export the model of the Fish.
module.exports = Fish;
Run Code Online (Sandbox Code Playgroud)
用户模型在fishes自定义实例方法中调用Fish模型:
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
bcrypt = require('bcrypt-nodejs'),
Fish = require('./fish');
//||||||||||||||||||||||||||--
// CREATE USER SCHEMA
//||||||||||||||||||||||||||--
var UserSchema = new Schema({
name: { type: String, required: true },
phoneNumber: {
type: String,
required: true,
index: { unique: true },
minlength: 7,
maxlength: 10
},
password: { type: String, required: true, select: false }
});
// … some bcrypt stuff…
// Access user's fishes - THIS IS WHAT'S MESSING UP!!
UserSchema.methods.fishes = function(callback) {
Fish.find({user: this._id}, function(err, fishes) {
callback(err, fishes);
});
};
module.exports = mongoose.model('User', UserSchema);
Run Code Online (Sandbox Code Playgroud)
当我调用.fishes()种子时,它声称Fish.find不是函数。
为什么!?任何帮助将不胜感激!
问题是循环导入(fish.jsrequires user.js,requires fish.js等)。
您可以通过在运行时解析模型类来解决此问题:
UserSchema.methods.fishes = function(callback) {
mongoose.model('Fish').find({user: this._id}, function(err, fishes) {
callback(err, fishes);
});
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |