节点js猫鼬类型错误
Node js Mongoose Type Error
我试图在散列他的电子邮件后将用户添加到数据库中。我创建了以下猫鼬模型。但是,我不断收到 TypeError: keyStore.createUser is not a function。
const bcrypt = require('bcrypt-nodejs');
const crypto = require('crypto');
const mongoose = require('mongoose');
const KeyStoreSchema = new mongoose.Schema({
email: { type: String, unique: true },
key: String,
endTime: Date
});
module.exports.createUser = function (email, callback) {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(newUser.email, salt, function (err, hash) {
newUser.email = email;
newUser.key = hash;
var myDate = new Date("2 dec 2012 3:30:00"); // your date object
console.log('Created key for user'+ newUser.email +'at time:'+myDate);
// add 24 hours to the key
myDate.setHours(myDate.getHours() + 24)
newUser.endTime = myDate;
newUser.save(callback);
});
});
}
module.exports.getUserByUsername = function (email, callback) {
var query = { email: username };
KeyStore.findOne(query, callback);
}
module.exports.getUserkey = function (email, callback) {
var query = { email:username }
KeyStore.findOne(query, 'key', callback);
}
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
module.exports = KeyStore;
因此,您不能 return 多个 "module.exports"。 Module.exports 只能使用一次,当您需要 javascript 文件时,这就是 returned 的东西。所以,实际上 returning 是最后分配的东西:
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
您有 2 个选择:
选项 1:使用导出,并且根本不声明 module.exports:
exports.createUser = function(){
//logic
}
exports.getUserByUserName(){
//logic
}
exports.getUserkey = function () {
//logic
}
...
选项 2:定义一个单独的结构,return 来自 module.exports:
var x = {};
x.createUser = function(){
//logic
}
x.getUserByUserName = function(){
//logic
}
x.getUserkey = function(){
//logic
}
...
module.exports = x;
终于可以解决了!这是我为使其正常工作所做的修改..
const bcrypt = require('bcrypt-nodejs');
const crypto = require('crypto');
const mongoose = require('mongoose');
const KeyStoreSchema = new mongoose.Schema({
email: { type: String, unique: true },
key: String,
endTime: Date
});
KeyStoreSchema.methods.createUser = function createUser(email, callback) {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(newUser.email, salt, function (err, hash) {
newUser.email = email;
newUser.key = hash;
var myDate = new Date("2 dec 2012 3:30:00"); // your date object
console.log('Created key for user'+ newUser.email +'at time:'+myDate);
// add 24 hours to the key
myDate.setHours(myDate.getHours() + 24)
newUser.endTime = myDate;
newUser.save(callback);
});
});
};
KeyStoreSchema.methods.getUserByUsername = function getUserByUsername(email, callback) {
var query = { email: username };
KeyStore.findOne(query, callback);
};
KeyStoreSchema.methods.getUserKey = function getUserKey(email, callback) {
var query = { email:username }
KeyStore.findOne(query, 'key', callback);
};
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
module.exports = KeyStore;
我试图在散列他的电子邮件后将用户添加到数据库中。我创建了以下猫鼬模型。但是,我不断收到 TypeError: keyStore.createUser is not a function。
const bcrypt = require('bcrypt-nodejs');
const crypto = require('crypto');
const mongoose = require('mongoose');
const KeyStoreSchema = new mongoose.Schema({
email: { type: String, unique: true },
key: String,
endTime: Date
});
module.exports.createUser = function (email, callback) {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(newUser.email, salt, function (err, hash) {
newUser.email = email;
newUser.key = hash;
var myDate = new Date("2 dec 2012 3:30:00"); // your date object
console.log('Created key for user'+ newUser.email +'at time:'+myDate);
// add 24 hours to the key
myDate.setHours(myDate.getHours() + 24)
newUser.endTime = myDate;
newUser.save(callback);
});
});
}
module.exports.getUserByUsername = function (email, callback) {
var query = { email: username };
KeyStore.findOne(query, callback);
}
module.exports.getUserkey = function (email, callback) {
var query = { email:username }
KeyStore.findOne(query, 'key', callback);
}
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
module.exports = KeyStore;
因此,您不能 return 多个 "module.exports"。 Module.exports 只能使用一次,当您需要 javascript 文件时,这就是 returned 的东西。所以,实际上 returning 是最后分配的东西:
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
您有 2 个选择:
选项 1:使用导出,并且根本不声明 module.exports:
exports.createUser = function(){
//logic
}
exports.getUserByUserName(){
//logic
}
exports.getUserkey = function () {
//logic
}
...
选项 2:定义一个单独的结构,return 来自 module.exports:
var x = {};
x.createUser = function(){
//logic
}
x.getUserByUserName = function(){
//logic
}
x.getUserkey = function(){
//logic
}
...
module.exports = x;
终于可以解决了!这是我为使其正常工作所做的修改..
const bcrypt = require('bcrypt-nodejs');
const crypto = require('crypto');
const mongoose = require('mongoose');
const KeyStoreSchema = new mongoose.Schema({
email: { type: String, unique: true },
key: String,
endTime: Date
});
KeyStoreSchema.methods.createUser = function createUser(email, callback) {
bcrypt.genSalt(10, function (err, salt) {
bcrypt.hash(newUser.email, salt, function (err, hash) {
newUser.email = email;
newUser.key = hash;
var myDate = new Date("2 dec 2012 3:30:00"); // your date object
console.log('Created key for user'+ newUser.email +'at time:'+myDate);
// add 24 hours to the key
myDate.setHours(myDate.getHours() + 24)
newUser.endTime = myDate;
newUser.save(callback);
});
});
};
KeyStoreSchema.methods.getUserByUsername = function getUserByUsername(email, callback) {
var query = { email: username };
KeyStore.findOne(query, callback);
};
KeyStoreSchema.methods.getUserKey = function getUserKey(email, callback) {
var query = { email:username }
KeyStore.findOne(query, 'key', callback);
};
const KeyStore = mongoose.model('KeyStore', KeyStoreSchema);
module.exports = KeyStore;