【发布时间】:2017-11-11 04:58:37
【问题描述】:
我在更新 MongoDB 中的记录时遇到了麻烦(使用 mongoose)。我的代码有效但不更新记录。请看下面的代码:
edit(req, res, next) {
var WorkType = require('../models/WorkType');
WorkType.update({id: req.params.id}, {name: req.body.name}, false, false)
.then(workType => {
res.send(200, {message: 'Work Type updated successfully'});
})
.catch(err => {
return next(err);
})
}
此代码运行,但不更新数据库中的信息。 POSTMAN 请求返回 HTTP 状态 200 OK 并显示消息:
{ "message": "工作类型更新成功" }
当我将代码更改为此
WorkType.update({id: req.params.id}, {name: req.body.name}, false, true)
我遇到了这个错误:
TypeError: 无法读取未定义的属性“then”
投掷者; // 未处理的“错误”事件
TypeError: callback.apply 不是函数
如果我将代码更改为这个:
WorkType.update({id: req.params.id}, {name: req.body.name}, true, false)
我有错误:
TypeError: 不能使用 'in' 运算符在 true 中搜索 'strict'
你能帮我找出问题出在哪里,或者为什么 promise 不适用于第二个代码吗?非常感谢您的帮助!
WorkType.js
var mongoose = require('mongoose');
var WorkTypeSchema = new mongoose.Schema({
name: {
type: String,
unique: true,
required: true
}
})
var WorkType = mongoose.model('WorkType', WorkTypeSchema);
module.exports = WorkType;
【问题讨论】:
-
如果您可以分享
WorkType.update(它可以是简单的定义)以了解它的运行方式以及为什么会出现这些错误,这将很有帮助,这些错误目前显示为错误的实现或代码中有一些错字。 -
update() 是一个标准的 MongoDB 函数 -> docs.mongodb.com/manual/reference/method/db.collection.update
-
我会检查自定义模块
../models/WorkType是否正确实现了数据库调用。 -
我已经编辑了我的 OP,以便您查看。谢谢
标签: javascript node.js mongodb