不能分配给只读属性“_id”
Cannot assign to read only property '_id' of
我有一个Node.js应用程序。这是我第一次尝试使用MongoDB。
当我尝试插入文档时,我收到此异常:
无法将 {"title":"某些标题"、"内容":"某些内容"、"标记":"#some #tags"} 分配给只读属性"_id
"这是它发生的代码行:
db.collection(collectionName).insertOne(json, callback);
我听说_id是Mongo应该自己创造的价值。我发现了很多问题,但要么不是_id字段,要么是_id字段,而是在客户端,它们根本没有帮助我。
任何帮助将不胜感激!
整个代码:
蒙戈经理.js:
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost:27017/blog';
function performOperation (func){
MongoClient.connect(url, function(err, db) {
func(db, function(err, result) {
db.close();
});
});
}
function insertOne(db, collectionName, json, callback){
db.collection(collectionName).insertOne(json, callback);
}
exports.addPost = function(json) {
performOperation(func);
function func (db, callback) {
insertOne(db, "posts", json, callback)
}
};
索引.js:
var express = require('express');
var router = express.Router();
router.post('/posts', function(req, res, next){
var mongoManager = require('../dal/mongo-manager.js');
mongoManager.addPost(JSON.stringify(req.body));
});
module.exports = router;
省
略JSON.stringify
调用,只需将req.body
传递给addPost
。 insertOne
需要一个对象,而不是一个字符串。
至于为什么这会导致该特定错误消息:如果它不存在,insertOne
会将唯一的_id
属性添加到作为doc
参数传递的值中,但字符串是只读(不可变)对象,因此它无法向其添加_id
。
我遇到了类似的问题,这是因为给出的obj
是一个string
并且无法设置strings
的属性
这解决了我的问题:
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
发生这种情况的JS代码在浏览器上运行。
相关文章:
- 如何使用Google Embed API获取选定的帐户ID和属性ID
- 为什么 Jasmine 在我设置 selectedIndex 时抱怨“试图分配给只读属性”
- 尝试分配只读属性,即使相同的命令在其他地方也有效
- 因果报应:试图分配给只读属性
- 在[background:url({{XXX}})无重复中心的严格模式下,不允许分配只读属性
- 如何从javascript srtring中的标记中获取id或属性值
- 补间最大动画 无法分配给只读属性“_gsTweenID”
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 文本框在回发时变为只读,即使手动将只读属性设置为 false
- Ionic2 + Angular2 - 尝试分配给只读属性
- 设置只读属性以保持输入可编辑
- 如何在javascript中设置文本框的只读属性
- 未捕获的类型错误: 无法分配给只读属性
- 类型错误: 无法分配给只读属性“选中”复选框
- 不能分配给只读属性“_id”
- 以编程方式设置 jqGrid 列中编辑选项的“只读”属性
- 在 IE 11 的严格模式下,不允许将 AngularJS 分配给只读属性
- 按 id 获取属性名称
- 如何在chrome浏览器中的输入字段中使用只读属性时启用光标移动
- 如何使用JQuery或Javascript添加只读属性(但遵循W3C标准!)