我正在尝试将一些数据保存到本地mongodb数据库中。 我的架构如下所示:
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
email: String,
passwordHash: String,
registerTimeStamp: { type: Number, default: Date.now() },
usersFollowing: [],
accountStatus: {
isBanned: { type: Boolean, default: false },
reason: { type: String, default: '' }
}
});
module.exports = mongoose.model('User', userSchema);
并且插入方法如下所示:
createUser(name, email, password) {
const passwordHash = "asdf";
const user = new User({
_id: new mongoose.Types.ObjectId(),
name,
email,
passwordHash
});
user.save(console.log("saved"));
}
我的问题是,即使我使用正确的参数调用方法,并打印“已保存”,也不会将数据插入数据库。
谢谢!
答案 0 :(得分:1)
首先,当你打电话时:
user.save(console.log("saved"));
控制台将打印"已保存"无论你是否得到错误。所以,如果没有合适的处理程序,你可能会遇到错误。如果您真的想知道您的用户实例发生了什么:
user.save()
.then(() => console.log("saved"))
.catch((error) => console.log(error));
如果你想使用回调而不是承诺:
user.save(function(error) {
if(error) throw error;
console.log("saved");
});
现在,插入方法出错了。
变化:
_id: new mongoose.Types.ObjectId(),
使用:
_id: new mongoose.Types.ObjectId,
括号是问题。
答案 1 :(得分:0)
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
email: String,
passwordHash: String,
registerTimeStamp: { type: Number, default: Date.now() },
usersFollowing: [],
accountStatus: {
isBanned: { type: Boolean, default: false },
reason: { type: String, default: '' }
}
});
const User = mongoose.model('User', userSchema);
module.exports = User;
module.exports.createUser = function (name, email, password) {
const passwordHash = "asdf";
const user = new User({
_id: new mongoose.Types.ObjectId(),
name,
email,
passwordHash
});
User.save(user , callback);
}
答案 2 :(得分:0)
问题是您只是记录消息,而不是将用户保存在数据库中。
为了做到这一点,首先你必须导出这样的用户模型:
const UserModel = mongoose.model('User', userSchema)
module.exports = UserModel
接下来,在您拥有createUser方法的同一文件中,导入UserModel。然后在您的createUser方法中,调用.save方法,但是从刚导入的模型中调用刚刚创建的用户:
const UserModel = require('../pathtothefile') //Here you specify the path of the user-model file
createUser(name, email, password) {
const passwordHash = "asdf"
const user = new User({
_id: new mongoose.Types.ObjectId(),
name,
email,
passwordHash
})
return UserModel.save(user)
}