【问题标题】:Cannot overwrite `User` model once compiled while model ' ' is compiled once (or I have overseen something) [duplicate]一旦编译了模型“”,就无法覆盖“用户”模型(或者我已经监督了一些事情)[重复]
【发布时间】:2017-01-23 02:07:26
【问题描述】:

你能帮帮我吗?我看不出这里有什么问题。

这是来自 server.js 的代码 sn-ps:

var mongoose = require('mongoose');

var MongoClient = require('mongodb').MongoClient
  , assert = require('assert');
var db = 'nodebook';
var url = ''
mongoose.createConnection('mongodb://localhost/'+db);

// The User
   var User = mongoose.model('User', {
     username: String,
     password: String,
     biography: String,
     image: String,
   });

每次“点头” server.js 时都会出现这种情况。 顺便提一句。我是 node.js/mongoose 的新手。

来自终端的错误:

/Users/davidnoldner/node_modules/mongoose/lib/index.js:360
      throw new mongoose.Error.OverwriteModelError(name);
      ^
OverwriteModelError: Cannot overwrite `User` model once compiled.
    at Mongoose.model (/Users/davidnoldner/node_modules/mongoose/lib/index.js:360:13)
    at Server.<anonymous> (/Users/davidnoldner/Librament/server.js:46:21)
    at emitTwo (events.js:87:13)
    at Server.emit (events.js:172:7)
    at HTTPParser.parserOnIncoming [as onIncoming] (_http_server.js:533:12)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:103:23)

也许有帮助 - mongod 控制台:

2016-09-15T08:32:07.973+0200 W NETWORK  [HostnameCanonicalizationWorker] Failed to obtain name info for: [ (2620:9b::5dd:4570, "nodename nor servname provided, or not known"), (2620:9b::5dd:4570, "nodename nor servname provided, or not known"), (192.168.0.16, "nodename nor servname provided, or not known"), (5.221.69.112, "nodename nor servname provided, or not known"), (192.168.0.16, "nodename nor servname provided, or not known"), (5.221.69.112, "nodename nor servname provided, or not known") ]

谢谢!

【问题讨论】:

  • 更新:我试图在这里找到解决方案:stackoverflow.com/questions/19051041/… 但我没有通过答案解决问题,这就是我在这里打开这个帖子的原因。我的问题仅基于一个名为 server.js 的文件,而我发现的其他类似问题基于更多文件,即关系中的 insert.js 和 app.js。

标签: javascript node.js mongodb mongoose


【解决方案1】:

您在初始化 mongoose 模型时犯了一个错误,并且没有遵循正确的语法和文档。请参阅 this 链接上的 mongoose 文档。

var mongoose = require('mongoose');

var MongoClient = require('mongodb').MongoClient
   ,assert = require('assert');
var db = 'nodebook';
var url = ''
mongoose.createConnection('mongodb://localhost:27017/'+db);

const Schema = mongoose.Schema;
// The User
var User = mongoose.model('User', new Schema({
    username: String,
    password: String,
    biography: String,
    image: String,
}));

【讨论】:

  • 好的,我改变了它并用下一个模型尝试了它,但我仍然收到同样的错误。代码现在看起来像这样: const Schema = mongoose.Schema; // 用户 var User = mongoose.model('User', new Schema({ username: String, password: String, biography: String, image: String, })); var Status = mongoose.model('Status', new Schema({ body: String, time: Number, username: String, image: String, cmets: Array, likes: Array }));
  • MongoDb 默认在端口27017 上运行,尝试建立连接时也要指定端口号。
  • 我将此行更改为服务器将侦听的端口var port = 27017;,但没有任何变化。同样的问题。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2017-06-22
  • 2021-03-24
  • 2020-11-13
  • 2019-01-13
  • 2013-10-03
相关资源
最近更新 更多