簡體   English   中英

無法分配給只讀屬性'_id'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM