Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在mongodb中保存记录_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 在mongodb中保存记录

Node.js 在mongodb中保存记录,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我不熟悉node.js和mongoDB。我一直在关注这本关于这个主题的书,这本书很成功。然而,当我尝试练习学习时。。。保存记录时失败 你能指导我的第一步学习吗 我确认node.js和mongoDB已安装并正在运行 我的代码页 var mongo = require('mongoose'); const UserSchema = new mongo.Schema({ name: { type: String, trim: true, required:

我不熟悉node.js和mongoDB。我一直在关注这本关于这个主题的书,这本书很成功。然而,当我尝试练习学习时。。。保存记录时失败

你能指导我的第一步学习吗

我确认node.js和mongoDB已安装并正在运行

我的代码页

var mongo = require('mongoose');
const UserSchema = new mongo.Schema({
    name: {
      type: String,
      trim: true,
      required: 'Name is required'
    },
    email: {
      type: String,
      trim: true,
      unique: 'Email already exists',
      match: [/.+\@shetty\.org\.uk/, 'Please fill a valid email address for your domain only'],
      required: 'Email is required'
    },
    hashed_password: {
      type: String,
      required: "Password is required"
    },
    status: {
      type: String,
      enum: ['New','Active','Disabled','Banned'],
      default: "New"
    },
    salt: String,
    updated: Date,
    created: {
      type: Date,
      default: Date.now
    }
});

var User = mongo.model('User', UserSchema);
var user1 = new User({
    name: 'Avinash',
    email: 'avinash@shetty.org.uk'
});

var user1 = new User({
    name: 'Avinash',
    email: 'avinash@shetty.org.uk'
});

mongo.promise = global.promise;
mongo.connect('mongodb://localhost/mongotest',{useNewUrlParser: true});

console.log(user1);

user1.save((err, result) => {
    if (err) {
        console.log('Error while saving');
    }else{
        console.log("Successfully saved record!");
    }
});
mongo.disconnect();
console.log将输出此

$ node index.js
{ status: 'New',
  _id: 5bb8ca9a348028b4d4663544,
  name: 'Avinash',
  email: 'avinash@shetty.org.uk',
  created: 2018-10-06T14:45:46.348Z }
Error while saving
(node:46292) DeprecationWarning: collection.ensureIndex is deprecated. Use createIndexes instead.
请做向导…:(

save()方法是异步的,这意味着您的代码将在异步指令完成之前继续运行下一条指令

在执行save调用之后,
mongo.disconnect()
将在
save()
完成之前终止实例

解决方案:

save()
操作完成并执行回调之前,不要调用
mongo.disconnect()

其他错误:


我还注意到,您已根据需要声明了用户架构的
hashd_password
属性,但在创建
user
实例时未提供密码。这将导致验证失败。

一个好的开始方法是记录您收到的错误,这样会更容易提供帮助。我得到的是e错误{MongoError:server实例池在server.insert的basicWriteValidations(C:\development\mongo\node\u modules\mongodb core\lib\topologies\server.js:700:41)(C:\development\mongo\node\u modules\mongodb core\lib\topologies\server.js:805:16)中被销毁(C:\development\mongo\node\u modules\mongodb\lib\topologies\topology\u base.js:321:25)好的,我在下面给出了一个答案,解释了出现错误的原因。要补充这个答案,你不应该调用
mongo.disconnect()
除非发生严重错误,否则不要担心。Mongo能够处理自己的连接,只要它按预期工作,就让它完全这样做。非常感谢。我忘记了javascript是异步的这一关键事实:)