如何從使用Mongoose的MongoDB中讀取數據時區分空數組和空值/未定義值? Mongoose同時讀取爲空數組,但在數據庫中,我必須使用這些數據庫的含義是不同的。確定Mongoose中空數組和undefined之間的差異
實施例:
var Mongoose = require('mongoose');
var MongoClient = require('mongodb').MongoClient;
Mongoose.connect('mongodb://localhost/test'); // mongoose
var Demo = Mongoose.model('demo', { names: [String] }, 'demo');
MongoClient.connect('mongodb://localhost/test', function (err, db) {
if (err) return console.error(err);
var collection = db.collection('demo');
// insert undefined array with MongoDB:
collection.insert({}, function(err, status) {
if(err) return console.error(err);
console.log('direct DB:', status.ops[0]);
// retrieve with Mongoose:
Demo.findOne({_id: status.insertedIds[0]}, function(err, doc) {
if(err) return console.error(err);
console.log('Mongoose:', doc);
});
});
});
當運行該代碼,它導致這樣的輸出:
direct DB: { _id: 56b07f632390b15c15b4185d }
Mongoose: { names: [], _id: 56b07f632390b15c15b4185d }
所以貓鼬設置空數組那裏不應該從讀取時成爲一個數據庫。 我已經嘗試設置名稱爲未定義在後init初始化,但它沒有顯示任何效果。
任何想法如何我可以讀取這個undef作爲一個undef?
可能不是您想要聽到的答案,但正確的答案是在您的模式中添加一個單獨的布爾字段,以指示您的null數組字段旨在表示的任何內容。 – JohnnyHK