【发布时间】:2015-10-03 07:54:15
【问题描述】:
这是我的 User.js
var mongoose = require('mongoose');
var bcrypt = require('bcrypt-nodejs');
var UserSchema = mongoose.Schema({
email: {
type: String,
unique: true
},
password: String,
});
var User = mongoose.model('User', UserSchema);
function createDefaultUsers() {
User.find({}).exec(function (err, collection) {
if (collection.length === 0) {
User.create({
email: 'name@eemail.com',
password: 'password0',
});
}
exports.createDefaultUsers = createDefaultUsers;
module.exports = mongoose.model('User', UserSchema);
我在另一个文件中调用 createDefaultUsers 来创建初始用户。
但是当这给我以下错误时:
userModel.createDefaultUsers(); ^ 类型错误:对象函数模型(文档、字段、skipId){ if (!(this instanceof model)) 返回新模型(文档,字段,skipId); Model.call(this, doc, fields, skipId); } 没有方法'createDefaultUsers'
但如果我注释掉 module.exports = mongoose.model('User', UserSchema); 它编译得很好。
我做错了什么。
干杯。
【问题讨论】:
-
我不明白你为什么使用
exports.createDefaultUsers = createDefaultUsers;。您要么导出模型,要么导出其他东西,而不是两者都导出,除非导出包含两者的对象。 -
@KevinB 我需要导出该函数,以便在初始化期间从另一个模块调用。有更好的方法吗?
-
您可以将其附加到模型或架构,请参见此处:mongoosejs.com/docs/guide.html(实例方法和静态方法)
-
谢谢凯文。我将其更改为“UserSchema.methods.createDefaultUsers = function () {”但仍然出现相同的错误。
标签: node.js mongodb mongoose schema