保存不保存任何数据

时间:2017-12-23 19:02:43

标签: javascript node.js mongodb mongoose mongoose-schema

我正在尝试将一些数据保存到本地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"));
}

我的问题是,即使我使用正确的参数调用方法,并打印“已保存”,也不会将数据插入数据库。

谢谢!

3 个答案:

答案 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)
}