Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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
Javascript 如何在mongoose中包含外部模型?_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

Javascript 如何在mongoose中包含外部模型?

Javascript 如何在mongoose中包含外部模型?,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,当我想在nodejs中包含mongoose的模型时,我遇到了一个问题,我正在用这样的模式创建一个模型 var mongoose = require('mongoose') , Schema = mongoose.Schema; var Users = new Schema({ idUser : {type:String}, username: {type:String} }); // middleware Users.pre('save', function (next

当我想在nodejs中包含mongoose的模型时,我遇到了一个问题,我正在用这样的模式创建一个模型

var mongoose = require('mongoose')
  , Schema = mongoose.Schema;

var Users = new Schema({
    idUser  : {type:String},
    username: {type:String}
});

// middleware
Users.pre('save', function (next,done) {
  notify(this.get('email') + done);
  // something goes wrong
  next(new Error('something went wrong'));
});

//registered on mongoose models
mongoose.model("Users",Users);
我保存在folde models/schema.js中 但当我尝试使用此代码时,我不知道如何在app.js中调用该文件

var mongoose = require('mongoose')
  , models = require('./models/schema.js');

//mongoose configurationfor database;
var db = mongoose.connect("mongodb://localhost/vynchat");
var users = mongoose.model("Users");
users.save();
尝试启动sudo node app.js时出错

throw e; // process.nextTick error, or 'error' event on first tick
              ^
TypeError: Object function model() {
    Model.apply(this, arguments);
  } has no method 'save'
    at Object.<anonymous> (/opt/development/vynapp/app.js:18:7)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)
    at Function._load (module.js:308:12)
    at Array.0 (module.js:479:10)
    at EventEmitter._tickCallback (node.js:192:40)
抛出e;//process.nextTick错误,或第一次勾选时的“error”事件
^
TypeError:对象函数模型(){
应用(这个,参数);
}没有“保存”方法
反对。(/opt/development/vynapp/app.js:18:7)
在模块处编译(Module.js:441:26)
at Object..js(module.js:459:10)
在Module.load(Module.js:348:31)
at功能。加载(module.js:308:12)
at Array.0(module.js:479:10)
在EventEmitter上进行回调(node.js:192:40)
错误模型()没有保存方法。。。
如何修复此问题?

您正在调用
users.save()
,但是,
用户
是一个模型

save
方法可用于模型实例,例如:

var mongoose = require('mongoose')
  , models = require('./models/schema');

var db = mongoose.connect("mongodb://localhost/vynchat")
  , Users = mongoose.model("Users");


var user = new User({
      "your": "data"
    });

user.save(function (err, model) {
  if (err) throw err;

  console.log("My new User is saved",
    "`save` hook worked as espected since we had no errors here");
});
您应该阅读node.js并仔细阅读


作为旁注:当您
require('mongoose')
在代码节点中的第一次将为您提供mongoose连接器的实例时,后续requires将生成相同的对象。

您在创建模型对象时缺少schema object param。 这样做:


我以前已经修复过我的代码,但新的问题是我可以从模式文件中的方法获得返回,
Users.methods.getId=function(models,id){models.findById(id,function(err,found){return found.username;};}
并且在我的app.js中我放置了这个代码
var conn=mongoose.createConnection('mongodb://localhost/vynchat“);var Users=conn.model('Users',Users);var m=new Users();console.log(m.getId(Users,“4f50914da314c150cf000001”);
结果未定义,但如果我是
console.log(found.username)
文件架构中的,则结果为真;如何修复..
getId
正在执行异步任务(
models.findById
),然后尝试使用
return
返回结果。这就是发明回调的原因。请参阅。我正在使用construct创建对象^_^
var users_model = mongoose.model("Users", YourSchemaObject);
var User_Document = new user_model();
User_Document.field_name = 'value'; //here you can access getter/setter/methods
User_Document.save();