一旦编译了模型“”,就无法覆盖“用户”模型(或者我已经监督了一些事情)[重复]

Posted

技术标签:

【中文标题】一旦编译了模型“”,就无法覆盖“用户”模型(或者我已经监督了一些事情)[重复]【英文标题】: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") ]

谢谢!

【问题讨论】:

更新:我试图在这里找到解决方案:***.com/questions/19051041/… 但我没有通过答案解决问题,这就是我在这里打开这个帖子的原因。我的问题仅基于一个名为 server.js 的文件,而我发现的其他类似问题基于更多文件,即关系中的 insert.js 和 app.js。 【参考方案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;,但没有任何变化。同样的问题。

以上是关于一旦编译了模型“”,就无法覆盖“用户”模型(或者我已经监督了一些事情)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

User.find 不是函数,一旦编译就无法覆盖“用户”模型

为啥我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?

为啥我在第二次运行测试时在 Mongoose 中收到错误“一旦编译后无法覆盖模型”?

编译后无法覆盖“用户”模型。解决后我得到“用户”未定义

编译节点 js 后无法覆盖“用户”模型

编译节点 js 后无法覆盖“用户”模型