[英]Cannot assign to read only property '_id' of
我有一個Node.js應用程序。 這是我第一次使用MongoDB。
我嘗試插入文檔時遇到此異常:
無法分配給{“title”的只讀屬性'_id':“some title”,“content”:“some content”,“tags”:“#some #tags”}
這是它出現的代碼行:
db.collection(collectionName).insertOne(json, callback);
我聽說_id是Mongo應該自己創造的價值。 我發現很多問題都有相同的例外,但要么不是_id字段,要么是_id字段,但在客戶端,他們根本沒有幫助我。
任何幫助將深表感謝!
整個代碼:
蒙戈 - manager.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)
}
};
index.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
將向作為doc
參數傳遞的值添加唯一的_id
屬性(如果它尚不存在),但字符串是只讀(不可變)對象,因此它可以不要添加_id
。
我有一個類似的問題,因為給出的obj
是一個string
而且你不能設置strings
屬性
這解決了我的問題:
if(window.Prototype) {
delete Object.prototype.toJSON;
delete Array.prototype.toJSON;
delete Hash.prototype.toJSON;
delete String.prototype.toJSON;
}
這個JS代碼是在瀏覽器上運行的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.