node.js - NodeJS/MongoDB - 字段仅添加一次?

标签 node.js mongodb reactjs

我正在学习 React with Node (Express/Mongoose) 和 MongoDB,现在一切似乎都按预期工作,但我有一个巨大的问题:

var userSchema = new mongoose.Schema({
  login: { type: String, required: true, unique: true },
  password: { type: String, required: true }
})

app.post('/registerUser', function (req, res) {
  res.send(req.body)

  db.on('error', console.error.bind(console, 'connection error:'))

  // save user using model
  var user = new UserModel(req.body)
  user.save()
}

每次我发布登录名和密码时,它只会保存一次,然后就结束了。

例如,如果我发送 POST 三次:

登录=admin&密码=admin

登录=admin2&密码=admin2

登录=admin3&密码=admin3

db.users.count() 显示 1 并且只有第一个 POST (admin:admin) 位于数据库中。其余的都被忽略了。我正在运行 console.logs 来查看出了什么问题,但每个 POST 都有不同的 _id,但不知何故,在第一个 POST 之后不保存。我在想save可能有问题,也许我应该使用updatecreate之类的东西,但我看过的每个教程和文档都说要使用save

当我删除该字段且集合为空,然后发送 POST 时,它会立即保存,然后忽略所有其他 POST(第二个、第三个等)。

我做错了什么?我希望我的收藏中有超过 1 位用户:(

[编辑]

看起来我的 ID 是“动态”创建的,因此 MongoDB 应根据文档触发 insert:https://docs.mongodb.com/manual/reference/method/db.collection.save/#behavior (而且我不确定它现在在做什么,因为它看起来也不像 update :/)

最佳答案

好吧,我完全忘记了我可以使用 mongo 的 CLI 来调试它,从那里很容易发现问题。如果您遇到这种情况,请尝试以下步骤:

从命令行/终端启动mongo

尝试为您复制有问题的操作 Node/ Mongoose 句柄,在我的例子中,它是添加新用户:

使用用户 db.users.save( { 登录名: "fromCLI", 密码: "fromCLI"} ) db.users.save( { 登录名: "fromCLI2", 密码: "fromCLI2"} )

阅读错误消息,就我而言,它是:

"errmsg": "E11000 重复键错误集合:users.users 索引:username_1 dup key: { : null }"

我没有用户名索引。我曾经有。不得不放弃该集合,然后它神奇地开始工作!

关于node.js - NodeJS/MongoDB - 字段仅添加一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43690418/

相关文章:

linux - 如何在 Linux CentOS 上关闭后自动启动 MongoDB 进程

node.js - 最佳实践 : Folder structure for client and server using create-react-app

javascript - React-Native Webview 使用音频播放器可以吗?

javascript - React Redux - 在发送问题之前快速闪现之前的状态

node.js - 在本地安装 npm 时忽略 ssl signage 让 bower 恢复包

javascript - mocha + mongodb 等待异步结果

mongodb - 我如何使用 mgo 和 Golang 编写以下 Mongo 聚合查询

mongodb - 在 MongoDB 中,如何使用文档中的字段作为 $geoWithin/$centerSphere 表达式的输入?

php - 如何设置 Node.js、PHP 和 MySQL 的开发环境

node.js - nodejitsu 400 错误 : ENOENT, 打开 '/opt/run/snapshot/package/images/tmp/72118-89rld0.png